Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/chalk_ext.rs')
| -rw-r--r-- | crates/hir-ty/src/chalk_ext.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/crates/hir-ty/src/chalk_ext.rs b/crates/hir-ty/src/chalk_ext.rs index 0b304014db..0f0cf6ae7a 100644 --- a/crates/hir-ty/src/chalk_ext.rs +++ b/crates/hir-ty/src/chalk_ext.rs @@ -418,10 +418,9 @@ impl ProjectionTyExt for ProjectionTy { fn trait_ref(&self, db: &dyn HirDatabase) -> TraitRef { // FIXME: something like `Split` trait from chalk-solve might be nice. let generics = generics(db, from_assoc_type_id(self.associated_ty_id).into()); - let substitution = Substitution::from_iter( - Interner, - self.substitution.iter(Interner).skip(generics.len_self()), - ); + let parent_len = generics.parent_generics().map_or(0, |g| g.len_self()); + let substitution = + Substitution::from_iter(Interner, self.substitution.iter(Interner).take(parent_len)); TraitRef { trait_id: to_chalk_trait_id(self.trait_(db)), substitution } } |