--- /dev/null
+#![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] => {}
+ }
+ match s2 {
+ //~^ ERROR `&[false, true]` not covered
+ [true, ..] => {}
+ [.., false] => {}
+ }
+ match s3 {
+ //~^ ERROR `&[false, _, true]` not covered
+ [true, ..] => {}
+ [.., false] => {}
+ }
+ match s {
+ //~^ ERROR `&[false, true]` not covered
+ [] => {}
+ [true, ..] => {}
+ [.., false] => {}
+ }
+
+ match s3 {
+ //~^ ERROR `&[false, _, _]` not covered
+ [true, .., true] => {}
+ }
+ match s {
+ //~^ ERROR `&[_]` not covered
+ [] => {}
+ }
+ match s {
+ //~^ ERROR `&[_, _]` not covered
+ [] => {}
+ [_] => {}
+ }
+ match s {
+ //~^ ERROR `&[false]` not covered
+ [] => {}
+ [true, ..] => {}
+ }
+ match s {
+ //~^ ERROR `&[false, _]` not covered
+ [] => {}
+ [_] => {}
+ [true, ..] => {}
+ }
+ match s {
+ //~^ ERROR `&[_, false]` not covered
+ [] => {}
+ [_] => {}
+ [.., true] => {}
+ }
+
+ 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] => {}
+ [..] => {}
+ }
+}
--- /dev/null
+error[E0004]: non-exhaustive patterns: `&[false, true]` not covered
+ --> $DIR/slice-patterns.rs:29:11
+ |
+LL | match s2 {
+ | ^^ pattern `&[false, true]` not covered
+ |
+ = 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
+ |
+LL | match s3 {
+ | ^^ pattern `&[false, _, true]` not covered
+ |
+ = 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
+ |
+LL | match s {
+ | ^ pattern `&[false, true]` not covered
+ |
+ = 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
+ |
+LL | match s3 {
+ | ^^ pattern `&[false, _, _]` not covered
+ |
+ = 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
+ |
+LL | match s {
+ | ^ pattern `&[_]` not covered
+ |
+ = 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
+ |
+LL | match s {
+ | ^ pattern `&[_, _]` not covered
+ |
+ = 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
+ |
+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[E0004]: non-exhaustive patterns: `&[false, _]` not covered
+ --> $DIR/slice-patterns.rs:64: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[E0004]: non-exhaustive patterns: `&[_, false]` not covered
+ --> $DIR/slice-patterns.rs:70: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: aborting due to 15 previous errors
+
+For more information about this error, try `rustc --explain E0004`.