fix: Correct assoc ty bound var starting index

This commit is contained in:
Shoyu Vanilla 2025-05-03 00:31:33 +09:00
parent 9625ef795d
commit 9f60884db7
2 changed files with 27 additions and 1 deletions

View File

@ -637,7 +637,10 @@ pub(crate) fn associated_ty_data_query(
.fill_with_bound_vars(crate::DebruijnIndex::INNERMOST, 0)
.build();
let pro_ty = TyBuilder::assoc_type_projection(db, type_alias, Some(trait_subst))
.fill_with_bound_vars(crate::DebruijnIndex::INNERMOST, generic_params.len_self())
.fill_with_bound_vars(
crate::DebruijnIndex::INNERMOST,
generic_params.parent_generics().map_or(0, |it| it.len()),
)
.build();
let self_ty = TyKind::Alias(AliasTy::Projection(pro_ty)).intern(Interner);

View File

@ -2278,3 +2278,26 @@ fn test(x: bool) {
"#]],
);
}
#[test]
fn issue_19730() {
check_infer(
r#"
trait Trait<T = Self> {}
trait Foo {
type Bar<A, B>: Trait;
fn foo<A, B>(bar: Self::Bar<A, B>) {
let _ = bar;
}
}
"#,
expect![[r#"
83..86 'bar': Foo::Bar<Self, A, B>
105..133 '{ ... }': ()
119..120 '_': Foo::Bar<Self, A, B>
123..126 'bar': Foo::Bar<Self, A, B>
"#]],
);
}