mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 11:20:54 +00:00
fix: Correct assoc ty bound var starting index
This commit is contained in:
parent
9625ef795d
commit
9f60884db7
@ -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);
|
||||
|
||||
|
@ -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>
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user