rust/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

68 lines
2.0 KiB
Rust
Raw Normal View History

#![deny(overlapping_range_endpoints)]
2020-11-20 19:03:56 +00:00
macro_rules! m {
($s:expr, $t1:pat, $t2:pat) => {
match $s {
$t1 => {}
$t2 => {}
_ => {}
}
};
2020-11-20 19:03:56 +00:00
}
fn main() {
m!(0u8, 20..=30, 30..=40); //~ ERROR multiple patterns overlap on their endpoints
m!(0u8, 30..=40, 20..=30); //~ ERROR multiple patterns overlap on their endpoints
2020-11-20 19:03:56 +00:00
m!(0u8, 20..=30, 31..=40);
m!(0u8, 20..=30, 29..=40);
m!(0u8, 20..30, 29..=40); //~ ERROR multiple patterns overlap on their endpoints
m!(0u8, 20..30, 28..=40);
m!(0u8, 20..30, 30..=40);
2020-11-20 19:03:56 +00:00
m!(0u8, 20..=30, 30..=30);
m!(0u8, 20..=30, 30..=31); //~ ERROR multiple patterns overlap on their endpoints
2020-11-20 19:03:56 +00:00
m!(0u8, 20..=30, 29..=30);
m!(0u8, 20..=30, 20..=20);
m!(0u8, 20..=30, 20..=21);
m!(0u8, 20..=30, 19..=20); //~ ERROR multiple patterns overlap on their endpoints
2020-11-20 19:03:56 +00:00
m!(0u8, 20..=30, 20);
m!(0u8, 20..=30, 25);
m!(0u8, 20..=30, 30);
m!(0u8, 20..30, 29);
2020-10-22 18:25:55 +00:00
m!(0u8, 20, 20..=30);
2020-11-20 19:03:56 +00:00
m!(0u8, 25, 20..=30);
2020-10-22 18:25:55 +00:00
m!(0u8, 30, 20..=30);
2020-11-20 19:03:56 +00:00
2020-11-22 21:58:41 +00:00
match 0u8 {
0..=10 => {}
20..=30 => {}
10..=20 => {}
//~^ ERROR multiple patterns overlap on their endpoints
//~| ERROR multiple patterns overlap on their endpoints
2020-11-22 21:58:41 +00:00
_ => {}
}
2020-11-20 19:03:56 +00:00
match (0u8, true) {
(0..=10, true) => {}
(10..20, true) => {} //~ ERROR multiple patterns overlap on their endpoints
2023-12-29 18:21:43 +00:00
(10..20, false) => {}
2020-11-20 19:03:56 +00:00
_ => {}
}
match (true, 0u8) {
(true, 0..=10) => {}
(true, 10..20) => {} //~ ERROR multiple patterns overlap on their endpoints
2023-12-29 18:21:43 +00:00
(false, 10..20) => {}
2020-11-20 19:03:56 +00:00
_ => {}
}
match Some(0u8) {
Some(0..=10) => {}
Some(10..20) => {} //~ ERROR multiple patterns overlap on their endpoints
2020-11-20 19:03:56 +00:00
_ => {}
}
2023-12-29 18:21:43 +00:00
// The lint has false negatives when we skip some cases because of relevancy.
match (true, true, 0u8) {
(true, _, 0..=10) => {}
(_, true, 10..20) => {}
_ => {}
}
2020-11-20 19:03:56 +00:00
}