diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index d01933e6ba..c99dd8d0a4 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) } diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index add12c6dbe..d14f5c9bb1 100644 --- a/crates/hir_ty/src/tests/regression.rs +++ b/crates/hir_ty/src/tests/regression.rs @@ -1039,6 +1039,14 @@ fn test() { } "#, expect![[r#" + 144..152 'residual': R + 365..366 'r': ControlFlow + 395..410 '{ ControlFlow }': ControlFlow + 397..408 'ControlFlow': ControlFlow + 424..482 '{ ...!>); }': () + 430..456 'Contro...sidual': fn from_residual, ControlFlow>(ControlFlow) -> ControlFlow + 430..479 'Contro...2, !>)': ControlFlow + 457..478 'Contro...32, !>': ControlFlow "#]], ); }