97 lines
2.0 KiB
Rust
97 lines
2.0 KiB
Rust
#![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] => {}
|
|
[..] => {}
|
|
}
|
|
}
|