Merge pull request #19732 from ShoyuVanilla/issue-19730

fix: Correct assoc ty bound var starting index
This commit is contained in:
Lukas Wirth 2025-05-02 20:46:54 +00:00 committed by GitHub
commit 3bf5d7f7f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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>
"#]],
);
}