about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2019-11-06 15:27:21 +0000
committerNadrieril <nadrieril+git@gmail.com>2019-11-06 15:27:21 +0000
commit098974dadd73902d6169e36eb1f57f48ce926b32 (patch)
tree55c5077135e8e678d73f09c99d9dd9b8002e2c3f
parent7514c48917b9a971dd9e21837edf9e80ff40c811 (diff)
downloadrust-098974dadd73902d6169e36eb1f57f48ce926b32.tar.gz
rust-098974dadd73902d6169e36eb1f57f48ce926b32.zip
Split slice-patterns test as suggested by Centril
-rw-r--r--src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs (renamed from src/test/ui/pattern/usefulness/slice-patterns.rs)35
-rw-r--r--src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr (renamed from src/test/ui/pattern/usefulness/slice-patterns.stderr)66
-rw-r--r--src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs27
-rw-r--r--src/test/ui/pattern/usefulness/slice-patterns-reachability.rs26
-rw-r--r--src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr44
5 files changed, 109 insertions, 89 deletions
diff --git a/src/test/ui/pattern/usefulness/slice-patterns.rs b/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs
index da2d40caf1a..86cdf160618 100644
--- a/src/test/ui/pattern/usefulness/slice-patterns.rs
+++ b/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs
@@ -1,27 +1,11 @@
 #![feature(slice_patterns)]
-#![deny(unreachable_patterns)]
 
 fn main() {
     let s: &[bool] = &[true; 0];
-    let s0: &[bool; 0] = &[];
     let s1: &[bool; 1] = &[false; 1];
     let s2: &[bool; 2] = &[false; 2];
     let s3: &[bool; 3] = &[false; 3];
 
-    let [] = s0;
-    let [_] = s1;
-    let [_, _] = s2;
-
-    let [..] = s;
-    let [..] = s0;
-    let [..] = s1;
-    let [..] = s2;
-    let [..] = s3;
-
-    let [_, _, ..] = s2;
-    let [_, .., _] = s2;
-    let [.., _, _] = s2;
-
     match s1 {
         [true, ..] => {}
         [.., false] => {}
@@ -75,25 +59,6 @@ fn main() {
     }
 
     match s {
-        [true, ..] => {}
-        [true, ..] => {} //~ ERROR unreachable pattern
-        [true] => {} //~ ERROR unreachable pattern
-        [..] => {}
-    }
-    match s {
-        [.., true] => {}
-        [.., true] => {} //~ ERROR unreachable pattern
-        [true] => {} //~ ERROR unreachable pattern
-        [..] => {}
-    }
-    match s {
-        [false, .., true] => {}
-        [false, .., true] => {} //~ ERROR unreachable pattern
-        [false, true] => {} //~ ERROR unreachable pattern
-        [false] => {}
-        [..] => {}
-    }
-    match s {
     //~^ ERROR `&[_, _, .., true]` not covered
         [] => {}
         [_] => {}
diff --git a/src/test/ui/pattern/usefulness/slice-patterns.stderr b/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr
index 6afe4705b0e..1391b520556 100644
--- a/src/test/ui/pattern/usefulness/slice-patterns.stderr
+++ b/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr
@@ -1,5 +1,5 @@
 error[E0004]: non-exhaustive patterns: `&[false, true]` not covered
-  --> $DIR/slice-patterns.rs:29:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:13:11
    |
 LL |     match s2 {
    |           ^^ pattern `&[false, true]` not covered
@@ -7,7 +7,7 @@ LL |     match s2 {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[false, _, true]` not covered
-  --> $DIR/slice-patterns.rs:34:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:18:11
    |
 LL |     match s3 {
    |           ^^ pattern `&[false, _, true]` not covered
@@ -15,7 +15,7 @@ LL |     match s3 {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[false, .., true]` not covered
-  --> $DIR/slice-patterns.rs:39:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:23:11
    |
 LL |     match s {
    |           ^ pattern `&[false, .., true]` not covered
@@ -23,7 +23,7 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[false, _, _]` not covered
-  --> $DIR/slice-patterns.rs:46:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:30:11
    |
 LL |     match s3 {
    |           ^^ pattern `&[false, _, _]` not covered
@@ -31,7 +31,7 @@ LL |     match s3 {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[_, ..]` not covered
-  --> $DIR/slice-patterns.rs:50:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:34:11
    |
 LL |     match s {
    |           ^ pattern `&[_, ..]` not covered
@@ -39,7 +39,7 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[_, _, ..]` not covered
-  --> $DIR/slice-patterns.rs:54:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:38:11
    |
 LL |     match s {
    |           ^ pattern `&[_, _, ..]` not covered
@@ -47,7 +47,7 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[false, ..]` not covered
-  --> $DIR/slice-patterns.rs:59:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:43:11
    |
 LL |     match s {
    |           ^ pattern `&[false, ..]` not covered
@@ -55,7 +55,7 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[false, _, ..]` not covered
-  --> $DIR/slice-patterns.rs:64:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:48:11
    |
 LL |     match s {
    |           ^ pattern `&[false, _, ..]` not covered
@@ -63,57 +63,15 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[_, .., false]` not covered
-  --> $DIR/slice-patterns.rs:70:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:54:11
    |
 LL |     match s {
    |           ^ pattern `&[_, .., false]` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:79:9
-   |
-LL |         [true, ..] => {}
-   |         ^^^^^^^^^^
-   |
-note: lint level defined here
-  --> $DIR/slice-patterns.rs:2:9
-   |
-LL | #![deny(unreachable_patterns)]
-   |         ^^^^^^^^^^^^^^^^^^^^
-
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:80:9
-   |
-LL |         [true] => {}
-   |         ^^^^^^
-
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:85:9
-   |
-LL |         [.., true] => {}
-   |         ^^^^^^^^^^
-
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:86:9
-   |
-LL |         [true] => {}
-   |         ^^^^^^
-
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:91:9
-   |
-LL |         [false, .., true] => {}
-   |         ^^^^^^^^^^^^^^^^^
-
-error: unreachable pattern
-  --> $DIR/slice-patterns.rs:92:9
-   |
-LL |         [false, true] => {}
-   |         ^^^^^^^^^^^^^
-
 error[E0004]: non-exhaustive patterns: `&[_, _, .., true]` not covered
-  --> $DIR/slice-patterns.rs:96:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:61:11
    |
 LL |     match s {
    |           ^ pattern `&[_, _, .., true]` not covered
@@ -121,13 +79,13 @@ LL |     match s {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
 error[E0004]: non-exhaustive patterns: `&[true, _, .., _]` not covered
-  --> $DIR/slice-patterns.rs:103:11
+  --> $DIR/slice-patterns-exhaustiveness.rs:68:11
    |
 LL |     match s {
    |           ^ pattern `&[true, _, .., _]` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
 
-error: aborting due to 17 previous errors
+error: aborting due to 11 previous errors
 
 For more information about this error, try `rustc --explain E0004`.
diff --git a/src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs b/src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs
new file mode 100644
index 00000000000..3b716bae772
--- /dev/null
+++ b/src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs
@@ -0,0 +1,27 @@
+// check-pass
+#![feature(slice_patterns)]
+
+fn main() {
+    let s: &[bool] = &[true; 0];
+    let s0: &[bool; 0] = &[];
+    let s1: &[bool; 1] = &[false; 1];
+    let s2: &[bool; 2] = &[false; 2];
+
+    let [] = s0;
+    let [_] = s1;
+    let [_, _] = s2;
+
+    let [..] = s;
+    let [..] = s0;
+    let [..] = s1;
+    let [..] = s2;
+
+    let [_, ..] = s1;
+    let [.., _] = s1;
+    let [_, ..] = s2;
+    let [.., _] = s2;
+
+    let [_, _, ..] = s2;
+    let [_, .., _] = s2;
+    let [.., _, _] = s2;
+}
diff --git a/src/test/ui/pattern/usefulness/slice-patterns-reachability.rs b/src/test/ui/pattern/usefulness/slice-patterns-reachability.rs
new file mode 100644
index 00000000000..35d9dc91aee
--- /dev/null
+++ b/src/test/ui/pattern/usefulness/slice-patterns-reachability.rs
@@ -0,0 +1,26 @@
+#![feature(slice_patterns)]
+#![deny(unreachable_patterns)]
+
+fn main() {
+    let s: &[bool] = &[true; 0];
+
+    match s {
+        [true, ..] => {}
+        [true, ..] => {} //~ ERROR unreachable pattern
+        [true] => {} //~ ERROR unreachable pattern
+        [..] => {}
+    }
+    match s {
+        [.., true] => {}
+        [.., true] => {} //~ ERROR unreachable pattern
+        [true] => {} //~ ERROR unreachable pattern
+        [..] => {}
+    }
+    match s {
+        [false, .., true] => {}
+        [false, .., true] => {} //~ ERROR unreachable pattern
+        [false, true] => {} //~ ERROR unreachable pattern
+        [false] => {}
+        [..] => {}
+    }
+}
diff --git a/src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr b/src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr
new file mode 100644
index 00000000000..333ce170283
--- /dev/null
+++ b/src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr
@@ -0,0 +1,44 @@
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:9:9
+   |
+LL |         [true, ..] => {}
+   |         ^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/slice-patterns-reachability.rs:2:9
+   |
+LL | #![deny(unreachable_patterns)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:10:9
+   |
+LL |         [true] => {}
+   |         ^^^^^^
+
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:15:9
+   |
+LL |         [.., true] => {}
+   |         ^^^^^^^^^^
+
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:16:9
+   |
+LL |         [true] => {}
+   |         ^^^^^^
+
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:21:9
+   |
+LL |         [false, .., true] => {}
+   |         ^^^^^^^^^^^^^^^^^
+
+error: unreachable pattern
+  --> $DIR/slice-patterns-reachability.rs:22:9
+   |
+LL |         [false, true] => {}
+   |         ^^^^^^^^^^^^^
+
+error: aborting due to 6 previous errors
+