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