Skip to content

Commit 098974d

Browse files
committed
Split slice-patterns test as suggested by Centril
1 parent 7514c48 commit 098974d

5 files changed

+109
-89
lines changed

src/test/ui/pattern/usefulness/slice-patterns.rs src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs

-35
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
11
#![feature(slice_patterns)]
2-
#![deny(unreachable_patterns)]
32

43
fn main() {
54
let s: &[bool] = &[true; 0];
6-
let s0: &[bool; 0] = &[];
75
let s1: &[bool; 1] = &[false; 1];
86
let s2: &[bool; 2] = &[false; 2];
97
let s3: &[bool; 3] = &[false; 3];
108

11-
let [] = s0;
12-
let [_] = s1;
13-
let [_, _] = s2;
14-
15-
let [..] = s;
16-
let [..] = s0;
17-
let [..] = s1;
18-
let [..] = s2;
19-
let [..] = s3;
20-
21-
let [_, _, ..] = s2;
22-
let [_, .., _] = s2;
23-
let [.., _, _] = s2;
24-
259
match s1 {
2610
[true, ..] => {}
2711
[.., false] => {}
@@ -74,25 +58,6 @@ fn main() {
7458
[.., true] => {}
7559
}
7660

77-
match s {
78-
[true, ..] => {}
79-
[true, ..] => {} //~ ERROR unreachable pattern
80-
[true] => {} //~ ERROR unreachable pattern
81-
[..] => {}
82-
}
83-
match s {
84-
[.., true] => {}
85-
[.., true] => {} //~ ERROR unreachable pattern
86-
[true] => {} //~ ERROR unreachable pattern
87-
[..] => {}
88-
}
89-
match s {
90-
[false, .., true] => {}
91-
[false, .., true] => {} //~ ERROR unreachable pattern
92-
[false, true] => {} //~ ERROR unreachable pattern
93-
[false] => {}
94-
[..] => {}
95-
}
9661
match s {
9762
//~^ ERROR `&[_, _, .., true]` not covered
9863
[] => {}
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,91 @@
11
error[E0004]: non-exhaustive patterns: `&[false, true]` not covered
2-
--> $DIR/slice-patterns.rs:29:11
2+
--> $DIR/slice-patterns-exhaustiveness.rs:13:11
33
|
44
LL | match s2 {
55
| ^^ pattern `&[false, true]` not covered
66
|
77
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
88

99
error[E0004]: non-exhaustive patterns: `&[false, _, true]` not covered
10-
--> $DIR/slice-patterns.rs:34:11
10+
--> $DIR/slice-patterns-exhaustiveness.rs:18:11
1111
|
1212
LL | match s3 {
1313
| ^^ pattern `&[false, _, true]` not covered
1414
|
1515
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
1616

1717
error[E0004]: non-exhaustive patterns: `&[false, .., true]` not covered
18-
--> $DIR/slice-patterns.rs:39:11
18+
--> $DIR/slice-patterns-exhaustiveness.rs:23:11
1919
|
2020
LL | match s {
2121
| ^ pattern `&[false, .., true]` not covered
2222
|
2323
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
2424

2525
error[E0004]: non-exhaustive patterns: `&[false, _, _]` not covered
26-
--> $DIR/slice-patterns.rs:46:11
26+
--> $DIR/slice-patterns-exhaustiveness.rs:30:11
2727
|
2828
LL | match s3 {
2929
| ^^ pattern `&[false, _, _]` not covered
3030
|
3131
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
3232

3333
error[E0004]: non-exhaustive patterns: `&[_, ..]` not covered
34-
--> $DIR/slice-patterns.rs:50:11
34+
--> $DIR/slice-patterns-exhaustiveness.rs:34:11
3535
|
3636
LL | match s {
3737
| ^ pattern `&[_, ..]` not covered
3838
|
3939
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
4040

4141
error[E0004]: non-exhaustive patterns: `&[_, _, ..]` not covered
42-
--> $DIR/slice-patterns.rs:54:11
42+
--> $DIR/slice-patterns-exhaustiveness.rs:38:11
4343
|
4444
LL | match s {
4545
| ^ pattern `&[_, _, ..]` not covered
4646
|
4747
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
4848

4949
error[E0004]: non-exhaustive patterns: `&[false, ..]` not covered
50-
--> $DIR/slice-patterns.rs:59:11
50+
--> $DIR/slice-patterns-exhaustiveness.rs:43:11
5151
|
5252
LL | match s {
5353
| ^ pattern `&[false, ..]` not covered
5454
|
5555
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
5656

5757
error[E0004]: non-exhaustive patterns: `&[false, _, ..]` not covered
58-
--> $DIR/slice-patterns.rs:64:11
58+
--> $DIR/slice-patterns-exhaustiveness.rs:48:11
5959
|
6060
LL | match s {
6161
| ^ pattern `&[false, _, ..]` not covered
6262
|
6363
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
6464

6565
error[E0004]: non-exhaustive patterns: `&[_, .., false]` not covered
66-
--> $DIR/slice-patterns.rs:70:11
66+
--> $DIR/slice-patterns-exhaustiveness.rs:54:11
6767
|
6868
LL | match s {
6969
| ^ pattern `&[_, .., false]` not covered
7070
|
7171
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
7272

73-
error: unreachable pattern
74-
--> $DIR/slice-patterns.rs:79:9
75-
|
76-
LL | [true, ..] => {}
77-
| ^^^^^^^^^^
78-
|
79-
note: lint level defined here
80-
--> $DIR/slice-patterns.rs:2:9
81-
|
82-
LL | #![deny(unreachable_patterns)]
83-
| ^^^^^^^^^^^^^^^^^^^^
84-
85-
error: unreachable pattern
86-
--> $DIR/slice-patterns.rs:80:9
87-
|
88-
LL | [true] => {}
89-
| ^^^^^^
90-
91-
error: unreachable pattern
92-
--> $DIR/slice-patterns.rs:85:9
93-
|
94-
LL | [.., true] => {}
95-
| ^^^^^^^^^^
96-
97-
error: unreachable pattern
98-
--> $DIR/slice-patterns.rs:86:9
99-
|
100-
LL | [true] => {}
101-
| ^^^^^^
102-
103-
error: unreachable pattern
104-
--> $DIR/slice-patterns.rs:91:9
105-
|
106-
LL | [false, .., true] => {}
107-
| ^^^^^^^^^^^^^^^^^
108-
109-
error: unreachable pattern
110-
--> $DIR/slice-patterns.rs:92:9
111-
|
112-
LL | [false, true] => {}
113-
| ^^^^^^^^^^^^^
114-
11573
error[E0004]: non-exhaustive patterns: `&[_, _, .., true]` not covered
116-
--> $DIR/slice-patterns.rs:96:11
74+
--> $DIR/slice-patterns-exhaustiveness.rs:61:11
11775
|
11876
LL | match s {
11977
| ^ pattern `&[_, _, .., true]` not covered
12078
|
12179
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
12280

12381
error[E0004]: non-exhaustive patterns: `&[true, _, .., _]` not covered
124-
--> $DIR/slice-patterns.rs:103:11
82+
--> $DIR/slice-patterns-exhaustiveness.rs:68:11
12583
|
12684
LL | match s {
12785
| ^ pattern `&[true, _, .., _]` not covered
12886
|
12987
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
13088

131-
error: aborting due to 17 previous errors
89+
error: aborting due to 11 previous errors
13290

13391
For more information about this error, try `rustc --explain E0004`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// check-pass
2+
#![feature(slice_patterns)]
3+
4+
fn main() {
5+
let s: &[bool] = &[true; 0];
6+
let s0: &[bool; 0] = &[];
7+
let s1: &[bool; 1] = &[false; 1];
8+
let s2: &[bool; 2] = &[false; 2];
9+
10+
let [] = s0;
11+
let [_] = s1;
12+
let [_, _] = s2;
13+
14+
let [..] = s;
15+
let [..] = s0;
16+
let [..] = s1;
17+
let [..] = s2;
18+
19+
let [_, ..] = s1;
20+
let [.., _] = s1;
21+
let [_, ..] = s2;
22+
let [.., _] = s2;
23+
24+
let [_, _, ..] = s2;
25+
let [_, .., _] = s2;
26+
let [.., _, _] = s2;
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#![feature(slice_patterns)]
2+
#![deny(unreachable_patterns)]
3+
4+
fn main() {
5+
let s: &[bool] = &[true; 0];
6+
7+
match s {
8+
[true, ..] => {}
9+
[true, ..] => {} //~ ERROR unreachable pattern
10+
[true] => {} //~ ERROR unreachable pattern
11+
[..] => {}
12+
}
13+
match s {
14+
[.., true] => {}
15+
[.., true] => {} //~ ERROR unreachable pattern
16+
[true] => {} //~ ERROR unreachable pattern
17+
[..] => {}
18+
}
19+
match s {
20+
[false, .., true] => {}
21+
[false, .., true] => {} //~ ERROR unreachable pattern
22+
[false, true] => {} //~ ERROR unreachable pattern
23+
[false] => {}
24+
[..] => {}
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
error: unreachable pattern
2+
--> $DIR/slice-patterns-reachability.rs:9:9
3+
|
4+
LL | [true, ..] => {}
5+
| ^^^^^^^^^^
6+
|
7+
note: lint level defined here
8+
--> $DIR/slice-patterns-reachability.rs:2:9
9+
|
10+
LL | #![deny(unreachable_patterns)]
11+
| ^^^^^^^^^^^^^^^^^^^^
12+
13+
error: unreachable pattern
14+
--> $DIR/slice-patterns-reachability.rs:10:9
15+
|
16+
LL | [true] => {}
17+
| ^^^^^^
18+
19+
error: unreachable pattern
20+
--> $DIR/slice-patterns-reachability.rs:15:9
21+
|
22+
LL | [.., true] => {}
23+
| ^^^^^^^^^^
24+
25+
error: unreachable pattern
26+
--> $DIR/slice-patterns-reachability.rs:16:9
27+
|
28+
LL | [true] => {}
29+
| ^^^^^^
30+
31+
error: unreachable pattern
32+
--> $DIR/slice-patterns-reachability.rs:21:9
33+
|
34+
LL | [false, .., true] => {}
35+
| ^^^^^^^^^^^^^^^^^
36+
37+
error: unreachable pattern
38+
--> $DIR/slice-patterns-reachability.rs:22:9
39+
|
40+
LL | [false, true] => {}
41+
| ^^^^^^^^^^^^^
42+
43+
error: aborting due to 6 previous errors
44+

0 commit comments

Comments
 (0)