about summary refs log tree commit diff
path: root/tests/ui/unsized
diff options
context:
space:
mode:
authorbohan <bohan-zhang@foxmail.com>2023-09-13 22:54:22 +0800
committerbohan <bohan-zhang@foxmail.com>2023-09-13 23:07:39 +0800
commit7c53e87d556f7ce878a446c9db058877ceb69d10 (patch)
treecf8431fb3d27174d5674328389a73eb2f182d3f3 /tests/ui/unsized
parent735bb7e5df185cc24e56533abd0bbab510931f6f (diff)
downloadrust-7c53e87d556f7ce878a446c9db058877ceb69d10.tar.gz
rust-7c53e87d556f7ce878a446c9db058877ceb69d10.zip
fix: skip opt if body has tainted error
Diffstat (limited to 'tests/ui/unsized')
-rw-r--r--tests/ui/unsized/issue-115809.rs13
-rw-r--r--tests/ui/unsized/issue-115809.stderr19
2 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/unsized/issue-115809.rs b/tests/ui/unsized/issue-115809.rs
new file mode 100644
index 00000000000..ff25365ea50
--- /dev/null
+++ b/tests/ui/unsized/issue-115809.rs
@@ -0,0 +1,13 @@
+// compile-flags: --emit=link -Zmir-opt-level=2 -Zpolymorphize=on
+
+fn foo<T>() {
+    let a: [i32; 0] = [];
+    match [a[..]] {
+        //~^ ERROR cannot move a value of type `[i32]
+        //~| ERROR cannot move out of type `[i32]`, a non-copy slice
+        [[x]] => {}
+        _ => (),
+    }
+}
+
+fn main() {}
diff --git a/tests/ui/unsized/issue-115809.stderr b/tests/ui/unsized/issue-115809.stderr
new file mode 100644
index 00000000000..a92554b79b9
--- /dev/null
+++ b/tests/ui/unsized/issue-115809.stderr
@@ -0,0 +1,19 @@
+error[E0161]: cannot move a value of type `[i32]`
+  --> $DIR/issue-115809.rs:5:12
+   |
+LL |     match [a[..]] {
+   |            ^^^^^ the size of `[i32]` cannot be statically determined
+
+error[E0508]: cannot move out of type `[i32]`, a non-copy slice
+  --> $DIR/issue-115809.rs:5:12
+   |
+LL |     match [a[..]] {
+   |            ^^^^^
+   |            |
+   |            cannot move out of here
+   |            move occurs because value has type `[i32]`, which does not implement the `Copy` trait
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0161, E0508.
+For more information about an error, try `rustc --explain E0161`.