Merged
Conversation
I predict that these may need access to the interners etc in rustc
lqd
reviewed
May 21, 2018
chalk-engine/src/context.rs
Outdated
| /// | ||
| /// At any given time, the SLG solver may have more than one context | ||
| /// active. First, there is always the *global* context, but when we | ||
| /// are in the midst of pursuing some particular strange, we will |
leoyvens
approved these changes
May 21, 2018
bors
added a commit
to rust-lang/rust
that referenced
this pull request
May 24, 2018
implement the chalk-engine traits Preliminary implementation for the Chalk traits in rustc. Lots of `panic!()` placeholders to be filled in later. This is currently blocked on us landing rust-lang/chalk#131 in chalk and issuing a new release, which should occur later today. r? @scalexm cc @leodasvacas
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refactor the context traits to allow rustc to implement them. The key change is that all the types go into one
Contexttrait which offers nothing but types (well, and a few very simple helper methods). This means that, on the rustc side, we can implementContextwith a type likeThis in turn means that types like
ExClause<ChalkContext<'tcx>>are effectively the same (contravariant in the lifetime'tcx, etc) as other rustc types likeTy<'tcx>and so forth. This unlocks the ability to implement theLiftand other traits we need.Plus, I think this setup is ultimately simpler on the chalk side, since we don't have annoying things like
ExClause<C, I>. The main downside is that we need some lift and conversion methods here and there.r? @scalexm or @leodasvacas