2019-07-02 06:08:28 +00:00
|
|
|
#![warn(clippy::match_same_arms)]
|
2016-01-30 17:03:53 +00:00
|
|
|
|
2016-10-08 13:16:00 +00:00
|
|
|
pub enum Abc {
|
|
|
|
A,
|
|
|
|
B,
|
|
|
|
C,
|
|
|
|
}
|
|
|
|
|
2019-02-10 09:19:24 +00:00
|
|
|
fn match_same_arms() {
|
2016-10-08 13:16:00 +00:00
|
|
|
let _ = match Abc::A {
|
2023-07-02 12:35:19 +00:00
|
|
|
Abc::A => 0, //~ ERROR: this match arm has an identical body to the `_` wildcard arm
|
2016-10-08 13:16:00 +00:00
|
|
|
Abc::B => 1,
|
2023-07-02 12:35:19 +00:00
|
|
|
_ => 0,
|
2016-10-08 13:16:00 +00:00
|
|
|
};
|
|
|
|
|
2016-05-27 12:24:28 +00:00
|
|
|
match (1, 2, 3) {
|
2023-07-02 12:35:19 +00:00
|
|
|
(1, .., 3) => 42, //~ ERROR: this match arm has an identical body to another arm
|
|
|
|
(.., 3) => 42,
|
2016-05-27 12:24:28 +00:00
|
|
|
_ => 0,
|
|
|
|
};
|
|
|
|
|
2019-05-16 12:13:57 +00:00
|
|
|
let _ = match 42 {
|
|
|
|
42 => 1,
|
2023-07-02 12:35:19 +00:00
|
|
|
51 => 1, //~ ERROR: this match arm has an identical body to another arm
|
|
|
|
41 => 2, //~ ERROR: this match arm has an identical body to another arm
|
|
|
|
52 => 2,
|
2019-05-16 12:13:57 +00:00
|
|
|
_ => 0,
|
|
|
|
};
|
2019-05-20 08:22:13 +00:00
|
|
|
|
|
|
|
let _ = match 42 {
|
|
|
|
1 => 2,
|
2023-07-02 12:35:19 +00:00
|
|
|
2 => 2, //~ ERROR: this match arm has an identical body to another arm
|
|
|
|
//~^ ERROR: this match arm has an identical body to another arm
|
|
|
|
3 => 2, //~ ERROR: this match arm has an identical body to another arm
|
2019-05-20 08:22:13 +00:00
|
|
|
4 => 3,
|
|
|
|
_ => 0,
|
|
|
|
};
|
2016-01-30 18:16:49 +00:00
|
|
|
}
|
|
|
|
|
2019-07-02 06:08:28 +00:00
|
|
|
mod issue4244 {
|
|
|
|
#[derive(PartialEq, PartialOrd, Eq, Ord)]
|
|
|
|
pub enum CommandInfo {
|
|
|
|
BuiltIn { name: String, about: Option<String> },
|
|
|
|
External { name: String, path: std::path::PathBuf },
|
|
|
|
}
|
|
|
|
|
|
|
|
impl CommandInfo {
|
|
|
|
pub fn name(&self) -> String {
|
|
|
|
match self {
|
|
|
|
CommandInfo::BuiltIn { name, .. } => name.to_string(),
|
|
|
|
CommandInfo::External { name, .. } => name.to_string(),
|
2023-07-02 12:35:19 +00:00
|
|
|
//~^ ERROR: this match arm has an identical body to another arm
|
2019-07-02 06:08:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-20 13:39:26 +00:00
|
|
|
macro_rules! m {
|
|
|
|
(foo) => {};
|
|
|
|
(bar) => {};
|
|
|
|
}
|
|
|
|
macro_rules! foo {
|
|
|
|
() => {
|
|
|
|
1
|
|
|
|
};
|
|
|
|
}
|
|
|
|
macro_rules! bar {
|
|
|
|
() => {
|
|
|
|
1
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let x = 0;
|
|
|
|
let _ = match 0 {
|
|
|
|
0 => {
|
|
|
|
m!(foo);
|
|
|
|
x
|
|
|
|
},
|
|
|
|
1 => {
|
|
|
|
m!(bar);
|
|
|
|
x
|
|
|
|
},
|
|
|
|
_ => 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = match 0 {
|
|
|
|
0 => {
|
|
|
|
m!(foo);
|
|
|
|
0
|
|
|
|
},
|
|
|
|
1 => {
|
|
|
|
m!(bar);
|
|
|
|
0
|
|
|
|
},
|
|
|
|
_ => 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = match 0 {
|
|
|
|
0 => {
|
|
|
|
let mut x = 0;
|
|
|
|
#[cfg(not_enabled)]
|
|
|
|
{
|
|
|
|
x = 5;
|
|
|
|
}
|
|
|
|
#[cfg(not(not_enabled))]
|
|
|
|
{
|
|
|
|
x = 6;
|
|
|
|
}
|
|
|
|
x
|
|
|
|
},
|
|
|
|
1 => {
|
|
|
|
let mut x = 0;
|
|
|
|
#[cfg(also_not_enabled)]
|
|
|
|
{
|
|
|
|
x = 5;
|
|
|
|
}
|
|
|
|
#[cfg(not(also_not_enabled))]
|
|
|
|
{
|
|
|
|
x = 6;
|
|
|
|
}
|
|
|
|
x
|
|
|
|
},
|
|
|
|
_ => 0,
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = match 0 {
|
|
|
|
0 => foo!(),
|
|
|
|
1 => bar!(),
|
|
|
|
_ => 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = match 0 {
|
|
|
|
0 => cfg!(not_enabled),
|
|
|
|
1 => cfg!(also_not_enabled),
|
|
|
|
_ => false,
|
|
|
|
};
|
|
|
|
}
|