From c2aefd5b95adb9e07919a11cdfcca45de79b5324 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Thu, 29 Apr 2021 20:21:50 +0200 Subject: Don't look in super traits for ::Assoc This isn't actually how it works, you have to specify the exact trait that has the associated type. Fixes #8686. --- crates/hir_ty/src/lower.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'crates/hir_ty/src/lower.rs') diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index d01933e6b..c99dd8d0a 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs @@ -414,17 +414,16 @@ impl<'a> TyLoweringContext<'a> { self.lower_trait_ref_from_resolved_path(trait_, resolved_segment, self_ty); let ty = if remaining_segments.len() == 1 { let segment = remaining_segments.first().unwrap(); - let found = associated_type_by_name_including_super_traits( - self.db, - trait_ref, - &segment.name, - ); + let found = self + .db + .trait_data(trait_ref.hir_trait_id()) + .associated_type_by_name(&segment.name); match found { - Some((super_trait_ref, associated_ty)) => { + Some(associated_ty) => { // FIXME handle type parameters on the segment TyKind::Alias(AliasTy::Projection(ProjectionTy { associated_ty_id: to_assoc_type_id(associated_ty), - substitution: super_trait_ref.substitution, + substitution: trait_ref.substitution, })) .intern(&Interner) } -- cgit v1.2.3