1 #![feature(or_patterns)]
2 #![deny(unreachable_patterns)]
4 // We wrap patterns in a tuple because top-level or-patterns were special-cased.
8 (1,) => {} //~ ERROR unreachable pattern
13 (2,) => {} //~ ERROR unreachable pattern
19 (1 | 2,) => {} //~ ERROR unreachable pattern
24 (1, 3) => {} //~ ERROR unreachable pattern
25 (1, 4) => {} //~ ERROR unreachable pattern
26 (2, 4) => {} //~ ERROR unreachable pattern
27 (2 | 1, 4) => {} //~ ERROR unreachable pattern
29 (1, 4 | 5) => {} //~ ERROR unreachable pattern
33 (false | true, false | true) => (),
36 (None | Some(1 | 2),) => {}
37 (Some(1),) => {} //~ ERROR unreachable pattern
38 (None,) => {} //~ ERROR unreachable pattern
42 ((1 | 2,) | (3 | 4,),) => {}
43 ((1..=4,),) => {} //~ ERROR unreachable pattern
48 (1 | 1,) => {} //~ ERROR unreachable
53 | 0 //~ ERROR unreachable
55 | 0] => {} //~ ERROR unreachable
63 [1 //~ ERROR unreachable
69 [true | false, ..] => {}
75 [true //~ ERROR unreachable
81 (false, Some(true)) => {}
82 (true | false, None | Some(true //~ ERROR unreachable
87 (true // FIXME: should be unreachable
93 (false, Some(true)) => {}
94 (true | false, None | Some(t_or_f!())) => {}
98 Some(0 //~ ERROR unreachable
103 // A subpattern that is only unreachable in one branch is overall reachable.
106 (false | true, false | true) => {}
111 (false | true, false | true) => {}
113 // https://github.com/rust-lang/rust/issues/76836
117 | false) => {} //~ ERROR unreachable
120 // A subpattern that is unreachable in all branches is overall unreachable.
125 | true) => {} //~ ERROR unreachable
131 | true, //~ ERROR unreachable