mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-15 01:55:03 +00:00
2b7dd31368
- add tests - refactor match_same_arms lint - prioritize match_expr_like_matches_macro over match_same_arms
123 lines
2.1 KiB
Rust
123 lines
2.1 KiB
Rust
// run-rustfix
|
|
|
|
#![warn(clippy::match_like_matches_macro)]
|
|
#![allow(unreachable_patterns, dead_code)]
|
|
|
|
fn main() {
|
|
let x = Some(5);
|
|
|
|
// Lint
|
|
let _y = match x {
|
|
Some(0) => true,
|
|
_ => false,
|
|
};
|
|
|
|
// Lint
|
|
let _w = match x {
|
|
Some(_) => true,
|
|
_ => false,
|
|
};
|
|
|
|
// Turn into is_none
|
|
let _z = match x {
|
|
Some(_) => false,
|
|
None => true,
|
|
};
|
|
|
|
// Lint
|
|
let _zz = match x {
|
|
Some(r) if r == 0 => false,
|
|
_ => true,
|
|
};
|
|
|
|
// Lint
|
|
let _zzz = if let Some(5) = x { true } else { false };
|
|
|
|
// No lint
|
|
let _a = match x {
|
|
Some(_) => false,
|
|
_ => false,
|
|
};
|
|
|
|
// No lint
|
|
let _ab = match x {
|
|
Some(0) => false,
|
|
_ => true,
|
|
None => false,
|
|
};
|
|
|
|
enum E {
|
|
A(u32),
|
|
B(i32),
|
|
C,
|
|
D,
|
|
};
|
|
let x = E::A(2);
|
|
{
|
|
// lint
|
|
let _ans = match x {
|
|
E::A(_) => true,
|
|
E::B(_) => true,
|
|
_ => false,
|
|
};
|
|
}
|
|
{
|
|
// lint
|
|
let _ans = match x {
|
|
E::B(_) => false,
|
|
E::C => false,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(_) => false,
|
|
E::B(_) => false,
|
|
E::C => true,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(_) => true,
|
|
E::B(_) => false,
|
|
E::C => false,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(a) if a < 10 => false,
|
|
E::B(a) if a < 10 => false,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(_) => false,
|
|
E::B(a) if a < 10 => false,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(a) => a == 10,
|
|
E::B(_) => false,
|
|
_ => true,
|
|
};
|
|
}
|
|
{
|
|
// no lint
|
|
let _ans = match x {
|
|
E::A(_) => false,
|
|
E::B(_) => true,
|
|
_ => false,
|
|
};
|
|
}
|
|
}
|