Auto merge of #5090 - JohnTitor:split-up-match-same-arms, r=phansch

Split up `match_same_arms` ui test

Part of #2038

changelog: none
This commit is contained in:
bors 2020-01-25 07:28:31 +00:00
commit 50f23ea3bc
4 changed files with 219 additions and 222 deletions

View file

@ -1,20 +1,4 @@
#![warn(clippy::match_same_arms)] #![warn(clippy::match_same_arms)]
#![allow(
clippy::blacklisted_name,
clippy::collapsible_if,
clippy::cognitive_complexity,
clippy::eq_op,
clippy::needless_continue,
clippy::needless_return,
clippy::no_effect,
clippy::zero_divided_by_zero,
clippy::unused_unit
)]
fn bar<T>(_: T) {}
fn foo() -> bool {
unimplemented!()
}
pub enum Abc { pub enum Abc {
A, A,
@ -22,93 +6,19 @@ pub enum Abc {
C, C,
} }
#[allow(clippy::unused_unit)]
fn match_same_arms() { fn match_same_arms() {
let _ = match 42 {
42 => {
foo();
let mut a = 42 + [23].len() as i32;
if true {
a += 7;
}
a = -31 - a;
a
},
_ => {
//~ ERROR match arms have same body
foo();
let mut a = 42 + [23].len() as i32;
if true {
a += 7;
}
a = -31 - a;
a
},
};
let _ = match Abc::A { let _ = match Abc::A {
Abc::A => 0, Abc::A => 0,
Abc::B => 1, Abc::B => 1,
_ => 0, //~ ERROR match arms have same body _ => 0, //~ ERROR match arms have same body
}; };
let _ = match 42 {
42 => foo(),
51 => foo(), //~ ERROR match arms have same body
_ => true,
};
let _ = match Some(42) {
Some(_) => 24,
None => 24, //~ ERROR match arms have same body
};
let _ = match Some(42) {
Some(foo) => 24,
None => 24,
};
let _ = match Some(42) {
Some(42) => 24,
Some(a) => 24, // bindings are different
None => 0,
};
let _ = match Some(42) {
Some(a) if a > 0 => 24,
Some(a) => 24, // one arm has a guard
None => 0,
};
match (Some(42), Some(42)) {
(Some(a), None) => bar(a),
(None, Some(a)) => bar(a), //~ ERROR match arms have same body
_ => (),
}
match (Some(42), Some(42)) {
(Some(a), ..) => bar(a),
(.., Some(a)) => bar(a), //~ ERROR match arms have same body
_ => (),
}
match (1, 2, 3) { match (1, 2, 3) {
(1, .., 3) => 42, (1, .., 3) => 42,
(.., 3) => 42, //~ ERROR match arms have same body (.., 3) => 42, //~ ERROR match arms have same body
_ => 0, _ => 0,
}; };
let _ = match Some(()) {
Some(()) => 0.0,
None => -0.0,
};
match (Some(42), Some("")) {
(Some(a), None) => bar(a),
(None, Some(a)) => bar(a), // bindings have different types
_ => (),
}
let _ = match 42 { let _ = match 42 {
42 => 1, 42 => 1,
51 => 1, //~ ERROR match arms have same body 51 => 1, //~ ERROR match arms have same body

View file

@ -1,245 +1,139 @@
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:37:14 --> $DIR/match_same_arms.rs:13:14
|
LL | _ => {
| ______________^
LL | | //~ ERROR match arms have same body
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
... |
LL | | a
LL | | },
| |_________^
|
= note: `-D clippy::match-same-arms` implied by `-D warnings`
note: same as this
--> $DIR/match_same_arms.rs:28:15
|
LL | 42 => {
| _______________^
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
LL | | if true {
... |
LL | | a
LL | | },
| |_________^
note: `42` has the same arm body as the `_` wildcard, consider removing it
--> $DIR/match_same_arms.rs:28:15
|
LL | 42 => {
| _______________^
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
LL | | if true {
... |
LL | | a
LL | | },
| |_________^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:52:14
| |
LL | _ => 0, //~ ERROR match arms have same body LL | _ => 0, //~ ERROR match arms have same body
| ^ | ^
| |
= note: `-D clippy::match-same-arms` implied by `-D warnings`
note: same as this note: same as this
--> $DIR/match_same_arms.rs:50:19 --> $DIR/match_same_arms.rs:11:19
| |
LL | Abc::A => 0, LL | Abc::A => 0,
| ^ | ^
note: `Abc::A` has the same arm body as the `_` wildcard, consider removing it note: `Abc::A` has the same arm body as the `_` wildcard, consider removing it
--> $DIR/match_same_arms.rs:50:19 --> $DIR/match_same_arms.rs:11:19
| |
LL | Abc::A => 0, LL | Abc::A => 0,
| ^ | ^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:57:15 --> $DIR/match_same_arms.rs:18:20
|
LL | 51 => foo(), //~ ERROR match arms have same body
| ^^^^^
|
note: same as this
--> $DIR/match_same_arms.rs:56:15
|
LL | 42 => foo(),
| ^^^^^
help: consider refactoring into `42 | 51`
--> $DIR/match_same_arms.rs:56:9
|
LL | 42 => foo(),
| ^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:63:17
|
LL | None => 24, //~ ERROR match arms have same body
| ^^
|
note: same as this
--> $DIR/match_same_arms.rs:62:20
|
LL | Some(_) => 24,
| ^^
help: consider refactoring into `Some(_) | None`
--> $DIR/match_same_arms.rs:62:9
|
LL | Some(_) => 24,
| ^^^^^^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:85:28
|
LL | (None, Some(a)) => bar(a), //~ ERROR match arms have same body
| ^^^^^^
|
note: same as this
--> $DIR/match_same_arms.rs:84:28
|
LL | (Some(a), None) => bar(a),
| ^^^^^^
help: consider refactoring into `(Some(a), None) | (None, Some(a))`
--> $DIR/match_same_arms.rs:84:9
|
LL | (Some(a), None) => bar(a),
| ^^^^^^^^^^^^^^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:91:26
|
LL | (.., Some(a)) => bar(a), //~ ERROR match arms have same body
| ^^^^^^
|
note: same as this
--> $DIR/match_same_arms.rs:90:26
|
LL | (Some(a), ..) => bar(a),
| ^^^^^^
help: consider refactoring into `(Some(a), ..) | (.., Some(a))`
--> $DIR/match_same_arms.rs:90:9
|
LL | (Some(a), ..) => bar(a),
| ^^^^^^^^^^^^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:97:20
| |
LL | (.., 3) => 42, //~ ERROR match arms have same body LL | (.., 3) => 42, //~ ERROR match arms have same body
| ^^ | ^^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:96:23 --> $DIR/match_same_arms.rs:17:23
| |
LL | (1, .., 3) => 42, LL | (1, .., 3) => 42,
| ^^ | ^^
help: consider refactoring into `(1, .., 3) | (.., 3)` help: consider refactoring into `(1, .., 3) | (.., 3)`
--> $DIR/match_same_arms.rs:96:9 --> $DIR/match_same_arms.rs:17:9
| |
LL | (1, .., 3) => 42, LL | (1, .., 3) => 42,
| ^^^^^^^^^^ | ^^^^^^^^^^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:114:15 --> $DIR/match_same_arms.rs:24:15
| |
LL | 51 => 1, //~ ERROR match arms have same body LL | 51 => 1, //~ ERROR match arms have same body
| ^ | ^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:113:15 --> $DIR/match_same_arms.rs:23:15
| |
LL | 42 => 1, LL | 42 => 1,
| ^ | ^
help: consider refactoring into `42 | 51` help: consider refactoring into `42 | 51`
--> $DIR/match_same_arms.rs:113:9 --> $DIR/match_same_arms.rs:23:9
| |
LL | 42 => 1, LL | 42 => 1,
| ^^ | ^^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:116:15 --> $DIR/match_same_arms.rs:26:15
| |
LL | 52 => 2, //~ ERROR match arms have same body LL | 52 => 2, //~ ERROR match arms have same body
| ^ | ^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:115:15 --> $DIR/match_same_arms.rs:25:15
| |
LL | 41 => 2, LL | 41 => 2,
| ^ | ^
help: consider refactoring into `41 | 52` help: consider refactoring into `41 | 52`
--> $DIR/match_same_arms.rs:115:9 --> $DIR/match_same_arms.rs:25:9
| |
LL | 41 => 2, LL | 41 => 2,
| ^^ | ^^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:122:14 --> $DIR/match_same_arms.rs:32:14
| |
LL | 2 => 2, //~ ERROR 2nd matched arms have same body LL | 2 => 2, //~ ERROR 2nd matched arms have same body
| ^ | ^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:121:14 --> $DIR/match_same_arms.rs:31:14
| |
LL | 1 => 2, LL | 1 => 2,
| ^ | ^
help: consider refactoring into `1 | 2` help: consider refactoring into `1 | 2`
--> $DIR/match_same_arms.rs:121:9 --> $DIR/match_same_arms.rs:31:9
| |
LL | 1 => 2, LL | 1 => 2,
| ^ | ^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:123:14 --> $DIR/match_same_arms.rs:33:14
| |
LL | 3 => 2, //~ ERROR 3rd matched arms have same body LL | 3 => 2, //~ ERROR 3rd matched arms have same body
| ^ | ^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:121:14 --> $DIR/match_same_arms.rs:31:14
| |
LL | 1 => 2, LL | 1 => 2,
| ^ | ^
help: consider refactoring into `1 | 3` help: consider refactoring into `1 | 3`
--> $DIR/match_same_arms.rs:121:9 --> $DIR/match_same_arms.rs:31:9
| |
LL | 1 => 2, LL | 1 => 2,
| ^ | ^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:123:14 --> $DIR/match_same_arms.rs:33:14
| |
LL | 3 => 2, //~ ERROR 3rd matched arms have same body LL | 3 => 2, //~ ERROR 3rd matched arms have same body
| ^ | ^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:122:14 --> $DIR/match_same_arms.rs:32:14
| |
LL | 2 => 2, //~ ERROR 2nd matched arms have same body LL | 2 => 2, //~ ERROR 2nd matched arms have same body
| ^ | ^
help: consider refactoring into `2 | 3` help: consider refactoring into `2 | 3`
--> $DIR/match_same_arms.rs:122:9 --> $DIR/match_same_arms.rs:32:9
| |
LL | 2 => 2, //~ ERROR 2nd matched arms have same body LL | 2 => 2, //~ ERROR 2nd matched arms have same body
| ^ | ^
error: this `match` has identical arm bodies error: this `match` has identical arm bodies
--> $DIR/match_same_arms.rs:140:55 --> $DIR/match_same_arms.rs:50:55
| |
LL | CommandInfo::External { name, .. } => name.to_string(), LL | CommandInfo::External { name, .. } => name.to_string(),
| ^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^
| |
note: same as this note: same as this
--> $DIR/match_same_arms.rs:139:54 --> $DIR/match_same_arms.rs:49:54
| |
LL | CommandInfo::BuiltIn { name, .. } => name.to_string(), LL | CommandInfo::BuiltIn { name, .. } => name.to_string(),
| ^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^
help: consider refactoring into `CommandInfo::BuiltIn { name, .. } | CommandInfo::External { name, .. }` help: consider refactoring into `CommandInfo::BuiltIn { name, .. } | CommandInfo::External { name, .. }`
--> $DIR/match_same_arms.rs:139:17 --> $DIR/match_same_arms.rs:49:17
| |
LL | CommandInfo::BuiltIn { name, .. } => name.to_string(), LL | CommandInfo::BuiltIn { name, .. } => name.to_string(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 13 previous errors error: aborting due to 8 previous errors

View file

@ -0,0 +1,84 @@
#![warn(clippy::match_same_arms)]
#![allow(clippy::blacklisted_name)]
fn bar<T>(_: T) {}
fn foo() -> bool {
unimplemented!()
}
fn match_same_arms() {
let _ = match 42 {
42 => {
foo();
let mut a = 42 + [23].len() as i32;
if true {
a += 7;
}
a = -31 - a;
a
},
_ => {
//~ ERROR match arms have same body
foo();
let mut a = 42 + [23].len() as i32;
if true {
a += 7;
}
a = -31 - a;
a
},
};
let _ = match 42 {
42 => foo(),
51 => foo(), //~ ERROR match arms have same body
_ => true,
};
let _ = match Some(42) {
Some(_) => 24,
None => 24, //~ ERROR match arms have same body
};
let _ = match Some(42) {
Some(foo) => 24,
None => 24,
};
let _ = match Some(42) {
Some(42) => 24,
Some(a) => 24, // bindings are different
None => 0,
};
let _ = match Some(42) {
Some(a) if a > 0 => 24,
Some(a) => 24, // one arm has a guard
None => 0,
};
match (Some(42), Some(42)) {
(Some(a), None) => bar(a),
(None, Some(a)) => bar(a), //~ ERROR match arms have same body
_ => (),
}
match (Some(42), Some(42)) {
(Some(a), ..) => bar(a),
(.., Some(a)) => bar(a), //~ ERROR match arms have same body
_ => (),
}
let _ = match Some(()) {
Some(()) => 0.0,
None => -0.0,
};
match (Some(42), Some("")) {
(Some(a), None) => bar(a),
(None, Some(a)) => bar(a), // bindings have different types
_ => (),
}
}
fn main() {}

View file

@ -0,0 +1,109 @@
error: this `match` has identical arm bodies
--> $DIR/match_same_arms2.rs:20:14
|
LL | _ => {
| ______________^
LL | | //~ ERROR match arms have same body
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
... |
LL | | a
LL | | },
| |_________^
|
= note: `-D clippy::match-same-arms` implied by `-D warnings`
note: same as this
--> $DIR/match_same_arms2.rs:11:15
|
LL | 42 => {
| _______________^
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
LL | | if true {
... |
LL | | a
LL | | },
| |_________^
note: `42` has the same arm body as the `_` wildcard, consider removing it
--> $DIR/match_same_arms2.rs:11:15
|
LL | 42 => {
| _______________^
LL | | foo();
LL | | let mut a = 42 + [23].len() as i32;
LL | | if true {
... |
LL | | a
LL | | },
| |_________^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms2.rs:34:15
|
LL | 51 => foo(), //~ ERROR match arms have same body
| ^^^^^
|
note: same as this
--> $DIR/match_same_arms2.rs:33:15
|
LL | 42 => foo(),
| ^^^^^
help: consider refactoring into `42 | 51`
--> $DIR/match_same_arms2.rs:33:9
|
LL | 42 => foo(),
| ^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms2.rs:40:17
|
LL | None => 24, //~ ERROR match arms have same body
| ^^
|
note: same as this
--> $DIR/match_same_arms2.rs:39:20
|
LL | Some(_) => 24,
| ^^
help: consider refactoring into `Some(_) | None`
--> $DIR/match_same_arms2.rs:39:9
|
LL | Some(_) => 24,
| ^^^^^^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms2.rs:62:28
|
LL | (None, Some(a)) => bar(a), //~ ERROR match arms have same body
| ^^^^^^
|
note: same as this
--> $DIR/match_same_arms2.rs:61:28
|
LL | (Some(a), None) => bar(a),
| ^^^^^^
help: consider refactoring into `(Some(a), None) | (None, Some(a))`
--> $DIR/match_same_arms2.rs:61:9
|
LL | (Some(a), None) => bar(a),
| ^^^^^^^^^^^^^^^
error: this `match` has identical arm bodies
--> $DIR/match_same_arms2.rs:68:26
|
LL | (.., Some(a)) => bar(a), //~ ERROR match arms have same body
| ^^^^^^
|
note: same as this
--> $DIR/match_same_arms2.rs:67:26
|
LL | (Some(a), ..) => bar(a),
| ^^^^^^
help: consider refactoring into `(Some(a), ..) | (.., Some(a))`
--> $DIR/match_same_arms2.rs:67:9
|
LL | (Some(a), ..) => bar(a),
| ^^^^^^^^^^^^^
error: aborting due to 5 previous errors