]> git.lizzy.rs Git - rust.git/blob - tests/ui/match_overlapping_arm.rs
2f85e63571351cf2023b88e3de3d05e2695d0b21
[rust.git] / tests / ui / match_overlapping_arm.rs
1 #![feature(exclusive_range_pattern)]
2 #![feature(half_open_range_patterns)]
3 #![warn(clippy::match_overlapping_arm)]
4 #![allow(clippy::redundant_pattern_matching)]
5 #![allow(clippy::if_same_then_else, clippy::equatable_if_let)]
6
7 /// Tests for match_overlapping_arm
8
9 fn overlapping() {
10     const FOO: u64 = 2;
11
12     match 42 {
13         0..=10 => println!("0..=10"),
14         0..=11 => println!("0..=11"),
15         _ => (),
16     }
17
18     match 42 {
19         0..=5 => println!("0..=5"),
20         6..=7 => println!("6..=7"),
21         FOO..=11 => println!("FOO..=11"),
22         _ => (),
23     }
24
25     match 42 {
26         2 => println!("2"),
27         0..=5 => println!("0..=5"),
28         _ => (),
29     }
30
31     match 42 {
32         2 => println!("2"),
33         0..=2 => println!("0..=2"),
34         _ => (),
35     }
36
37     match 42 {
38         0..=10 => println!("0..=10"),
39         11..=50 => println!("11..=50"),
40         _ => (),
41     }
42
43     match 42 {
44         2 => println!("2"),
45         0..2 => println!("0..2"),
46         _ => (),
47     }
48
49     match 42 {
50         0..10 => println!("0..10"),
51         10..50 => println!("10..50"),
52         _ => (),
53     }
54
55     match 42 {
56         0..11 => println!("0..11"),
57         0..=11 => println!("0..=11"),
58         _ => (),
59     }
60
61     match 42 {
62         5..7 => println!("5..7"),
63         0..10 => println!("0..10"),
64         _ => (),
65     }
66
67     match 42 {
68         5..10 => println!("5..10"),
69         0..=10 => println!("0..=10"),
70         _ => (),
71     }
72
73     match 42 {
74         0..14 => println!("0..14"),
75         5..10 => println!("5..10"),
76         _ => (),
77     }
78
79     match 42 {
80         5..14 => println!("5..14"),
81         0..=10 => println!("0..=10"),
82         _ => (),
83     }
84
85     match 42 {
86         0..7 => println!("0..7"),
87         0..=10 => println!("0..=10"),
88         _ => (),
89     }
90
91     match 42 {
92         3.. => println!("3.."),
93         0.. => println!("0.."),
94         _ => (),
95     }
96
97     match 42 {
98         ..=23 => println!("..=23"),
99         ..26 => println!("..26"),
100         _ => (),
101     }
102
103     // Issue #7816 - overlap after included range
104     match 42 {
105         5..=10 => (),
106         0..=20 => (),
107         21..=30 => (),
108         21..=40 => (),
109         _ => (),
110     }
111
112     // Issue #7829
113     match 0 {
114         -1..=1 => (),
115         -2..=2 => (),
116         _ => (),
117     }
118
119     // Only warn about the first if there are multiple overlaps
120     match 42u128 {
121         0..=0x0000_0000_0000_00ff => (),
122         0..=0x0000_0000_0000_ffff => (),
123         0..=0x0000_0000_ffff_ffff => (),
124         0..=0xffff_ffff_ffff_ffff => (),
125         _ => (),
126     }
127
128     if let None = Some(42) {
129         // nothing
130     } else if let None = Some(42) {
131         // another nothing :-)
132     }
133 }
134
135 fn main() {}