Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_ty/src/tests/regression.rs')
-rw-r--r--crates/hir_ty/src/tests/regression.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs
index b17e517ccb..020c5da680 100644
--- a/crates/hir_ty/src/tests/regression.rs
+++ b/crates/hir_ty/src/tests/regression.rs
@@ -1298,3 +1298,71 @@ impl<I: Iterator> IntoIterator for I {
"#,
);
}
+
+#[test]
+fn bug_11659() {
+ check_infer(
+ r#"
+struct LinkArray<const N: usize, LD>(LD);
+fn f<const N: usize, LD>(x: LD) -> LinkArray<N, LD> {
+ let r = LinkArray::<N, LD>(x);
+ r
+}
+
+fn test() {
+ let x = f::<2, i32>(5);
+ let y = LinkArray::<52, LinkArray<2, i32>>(x);
+}
+ "#,
+ expect![[r#"
+ 67..68 'x': LD
+ 94..138 '{ ... r }': LinkArray<{unknown}, LD>
+ 104..105 'r': LinkArray<{unknown}, LD>
+ 108..126 'LinkAr...N, LD>': LinkArray<{unknown}, LD>(LD) -> LinkArray<{unknown}, LD>
+ 108..129 'LinkAr...LD>(x)': LinkArray<{unknown}, LD>
+ 127..128 'x': LD
+ 135..136 'r': LinkArray<{unknown}, LD>
+ 150..232 '{ ...(x); }': ()
+ 160..161 'x': LinkArray<{unknown}, {unknown}>
+ 164..175 'f::<2, i32>': fn f<i32, i32>(i32) -> LinkArray<{unknown}, {unknown}>
+ 164..178 'f::<2, i32>(5)': LinkArray<{unknown}, {unknown}>
+ 176..177 '5': i32
+ 188..189 'y': LinkArray<LinkArray<i32, {unknown}>, LinkArray<{unknown}, {unknown}>>
+ 192..226 'LinkAr... i32>>': LinkArray<LinkArray<i32, {unknown}>, LinkArray<{unknown}, {unknown}>>(LinkArray<{unknown}, {unknown}>) -> LinkArray<LinkArray<i32, {unknown}>, LinkArray<{unknown}, {unknown}>>
+ 192..229 'LinkAr...2>>(x)': LinkArray<LinkArray<i32, {unknown}>, LinkArray<{unknown}, {unknown}>>
+ 227..228 'x': LinkArray<{unknown}, {unknown}>
+ "#]],
+ );
+ check_infer(
+ r#"
+struct LinkArray<LD, const N: usize>(LD);
+fn f<const N: usize, LD>(x: LD) -> LinkArray<LD, N> {
+ let r = LinkArray::<LD, N>(x);
+ r
+}
+
+fn test() {
+ let x = f::<i32, 2>(5);
+ let y = LinkArray::<LinkArray<i32, 2>, 52>(x);
+}
+ "#,
+ expect![[r#"
+ 67..68 'x': LD
+ 94..138 '{ ... r }': LinkArray<LD, {unknown}>
+ 104..105 'r': LinkArray<LD, {unknown}>
+ 108..126 'LinkAr...LD, N>': LinkArray<LD, {unknown}>(LD) -> LinkArray<LD, {unknown}>
+ 108..129 'LinkAr... N>(x)': LinkArray<LD, {unknown}>
+ 127..128 'x': LD
+ 135..136 'r': LinkArray<LD, {unknown}>
+ 150..232 '{ ...(x); }': ()
+ 160..161 'x': LinkArray<i32, {unknown}>
+ 164..175 'f::<i32, 2>': fn f<i32, i32>(i32) -> LinkArray<i32, {unknown}>
+ 164..178 'f::<i32, 2>(5)': LinkArray<i32, {unknown}>
+ 176..177 '5': i32
+ 188..189 'y': LinkArray<LinkArray<i32, {unknown}>, {unknown}>
+ 192..226 'LinkAr...>, 52>': LinkArray<LinkArray<i32, {unknown}>, {unknown}>(LinkArray<i32, {unknown}>) -> LinkArray<LinkArray<i32, {unknown}>, {unknown}>
+ 192..229 'LinkAr...52>(x)': LinkArray<LinkArray<i32, {unknown}>, {unknown}>
+ 227..228 'x': LinkArray<i32, {unknown}>
+ "#]],
+ );
+}