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
Context
trait which offers nothing but types (well, and a few very simple helper methods). This means that, on the rustc side, we can implementContext
with 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 theLift
and 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