Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/simple.rs')
-rw-r--r--crates/hir-ty/src/tests/simple.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/simple.rs b/crates/hir-ty/src/tests/simple.rs
index 1563660457..50a1ecd006 100644
--- a/crates/hir-ty/src/tests/simple.rs
+++ b/crates/hir-ty/src/tests/simple.rs
@@ -3814,3 +3814,50 @@ async fn foo(a: (), b: i32) -> u32 {
"#,
);
}
+
+#[test]
+fn irrefutable_slices() {
+ check_infer(
+ r#"
+//- minicore: from
+struct A;
+
+impl From<A> for [u8; 2] {
+ fn from(a: A) -> Self {
+ [0; 2]
+ }
+}
+impl From<A> for [u8; 3] {
+ fn from(a: A) -> Self {
+ [0; 3]
+ }
+}
+
+
+fn main() {
+ let a = A;
+ let [b, c] = a.into();
+}
+"#,
+ expect![[r#"
+ 50..51 'a': A
+ 64..86 '{ ... }': [u8; 2]
+ 74..80 '[0; 2]': [u8; 2]
+ 75..76 '0': u8
+ 78..79 '2': usize
+ 128..129 'a': A
+ 142..164 '{ ... }': [u8; 3]
+ 152..158 '[0; 3]': [u8; 3]
+ 153..154 '0': u8
+ 156..157 '3': usize
+ 179..224 '{ ...o(); }': ()
+ 189..190 'a': A
+ 193..194 'A': A
+ 204..210 '[b, c]': [u8; 2]
+ 205..206 'b': u8
+ 208..209 'c': u8
+ 213..214 'a': A
+ 213..221 'a.into()': [u8; 2]
+ "#]],
+ );
+}