about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/hir_ty/src/lower.rs4
-rw-r--r--crates/hir_ty/src/tests/regression.rs20
2 files changed, 22 insertions, 2 deletions
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs
index d0226cec263..de56414d308 100644
--- a/crates/hir_ty/src/lower.rs
+++ b/crates/hir_ty/src/lower.rs
@@ -205,7 +205,7 @@ impl<'a> TyLoweringContext<'a> {
                     len,
                     self.type_param_mode,
                     || self.generics(),
-                    DebruijnIndex::INNERMOST,
+                    self.in_binders,
                 );
 
                 TyKind::Array(inner_ty, const_len).intern(Interner)
@@ -728,7 +728,7 @@ impl<'a> TyLoweringContext<'a> {
                             c,
                             self.type_param_mode,
                             || self.generics(),
-                            DebruijnIndex::INNERMOST,
+                            self.in_binders,
                         )
                     },
                 ) {
diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs
index 7a7470fd354..14c6af943ab 100644
--- a/crates/hir_ty/src/tests/regression.rs
+++ b/crates/hir_ty/src/tests/regression.rs
@@ -1477,3 +1477,23 @@ fn regression_11688_2() {
         "#,
     );
 }
+
+#[test]
+fn regression_11688_3() {
+    check_types(
+        r#"
+        //- minicore: iterator
+        struct Ar<T, const N: u8>(T);
+        fn f<const LEN: usize, T, const BASE: u8>(
+            num_zeros: usize,
+        ) -> dyn Iterator<Item = [Ar<T, BASE>; LEN]> {
+            loop {}
+        }
+        fn dynamic_programming() {
+            for board in f::<9, u8, 7>(1) {
+              //^^^^^ [Ar<u8, 7>; 9]
+            }
+        }
+        "#,
+    );
+}