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 Some(0 //~ ERROR unreachable
74 // A subpattern that is only unreachable in one branch is overall reachable.
77 (false | true, false | true) => {}
82 (false | true, false | true) => {}
84 // https://github.com/rust-lang/rust/issues/76836
88 | false) => {} //~ ERROR unreachable
91 // A subpattern that is unreachable in all branches is overall unreachable.
96 | true) => {} //~ ERROR unreachable
102 | true, //~ ERROR unreachable