Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #19732 from ShoyuVanilla/issue-19730
fix: Correct assoc ty bound var starting index
Lukas Wirth 12 months ago
parent be74333 · parent 9f60884 · commit 3bf5d7f
-rw-r--r--crates/hir-ty/src/chalk_db.rs5
-rw-r--r--crates/hir-ty/src/tests/regression.rs23
2 files changed, 27 insertions, 1 deletions
diff --git a/crates/hir-ty/src/chalk_db.rs b/crates/hir-ty/src/chalk_db.rs
index 376daccbda..cd799c03dd 100644
--- a/crates/hir-ty/src/chalk_db.rs
+++ b/crates/hir-ty/src/chalk_db.rs
@@ -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);
diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs
index 644b0d392b..47c695c697 100644
--- a/crates/hir-ty/src/tests/regression.rs
+++ b/crates/hir-ty/src/tests/regression.rs
@@ -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>
+ "#]],
+ );
+}