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