diff options
Diffstat (limited to 'src/tools/clippy/tests/ui/match_overlapping_arm.rs')
-rw-r--r-- | src/tools/clippy/tests/ui/match_overlapping_arm.rs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/match_overlapping_arm.rs b/src/tools/clippy/tests/ui/match_overlapping_arm.rs new file mode 100644 index 000000000..2f85e6357 --- /dev/null +++ b/src/tools/clippy/tests/ui/match_overlapping_arm.rs @@ -0,0 +1,135 @@ +#![feature(exclusive_range_pattern)] +#![feature(half_open_range_patterns)] +#![warn(clippy::match_overlapping_arm)] +#![allow(clippy::redundant_pattern_matching)] +#![allow(clippy::if_same_then_else, clippy::equatable_if_let)] + +/// Tests for match_overlapping_arm + +fn overlapping() { + const FOO: u64 = 2; + + match 42 { + 0..=10 => println!("0..=10"), + 0..=11 => println!("0..=11"), + _ => (), + } + + match 42 { + 0..=5 => println!("0..=5"), + 6..=7 => println!("6..=7"), + FOO..=11 => println!("FOO..=11"), + _ => (), + } + + match 42 { + 2 => println!("2"), + 0..=5 => println!("0..=5"), + _ => (), + } + + match 42 { + 2 => println!("2"), + 0..=2 => println!("0..=2"), + _ => (), + } + + match 42 { + 0..=10 => println!("0..=10"), + 11..=50 => println!("11..=50"), + _ => (), + } + + match 42 { + 2 => println!("2"), + 0..2 => println!("0..2"), + _ => (), + } + + match 42 { + 0..10 => println!("0..10"), + 10..50 => println!("10..50"), + _ => (), + } + + match 42 { + 0..11 => println!("0..11"), + 0..=11 => println!("0..=11"), + _ => (), + } + + match 42 { + 5..7 => println!("5..7"), + 0..10 => println!("0..10"), + _ => (), + } + + match 42 { + 5..10 => println!("5..10"), + 0..=10 => println!("0..=10"), + _ => (), + } + + match 42 { + 0..14 => println!("0..14"), + 5..10 => println!("5..10"), + _ => (), + } + + match 42 { + 5..14 => println!("5..14"), + 0..=10 => println!("0..=10"), + _ => (), + } + + match 42 { + 0..7 => println!("0..7"), + 0..=10 => println!("0..=10"), + _ => (), + } + + match 42 { + 3.. => println!("3.."), + 0.. => println!("0.."), + _ => (), + } + + match 42 { + ..=23 => println!("..=23"), + ..26 => println!("..26"), + _ => (), + } + + // Issue #7816 - overlap after included range + match 42 { + 5..=10 => (), + 0..=20 => (), + 21..=30 => (), + 21..=40 => (), + _ => (), + } + + // Issue #7829 + match 0 { + -1..=1 => (), + -2..=2 => (), + _ => (), + } + + // Only warn about the first if there are multiple overlaps + match 42u128 { + 0..=0x0000_0000_0000_00ff => (), + 0..=0x0000_0000_0000_ffff => (), + 0..=0x0000_0000_ffff_ffff => (), + 0..=0xffff_ffff_ffff_ffff => (), + _ => (), + } + + if let None = Some(42) { + // nothing + } else if let None = Some(42) { + // another nothing :-) + } +} + +fn main() {} |