Lift clauses on associated types to be clauses on the whole trait #290
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.
Dinstinguishing trait clauses defined on an associated type versus those defined as a where clause on the whole trait does not seem useful. What's meaningful is distinguishing clauses that are required to mention the trait versus clauses that are implied by the trait. We already make this distinction: required clauses are in the
TraitDecl.generics
field, implied clauses are inTraitDecl.parent_clauses
.This PR moves all the
type Item: Trait
clauses to bewhere Self::Item: Trait
parent clauses on the trait to simplify clause management. This is done as a post-processing pass. I would have liked to to this when we translate clauses, but I'll leave that for later when generics are easier to follow.