From 83f6b516a094e7a39e3ad58b074cd9c366960b63 Mon Sep 17 00:00:00 2001
From: Yuki Okushi <huyuumi.dev@gmail.com>
Date: Sat, 25 Jan 2020 14:25:45 +0900
Subject: [PATCH] Split up `match_same_arms` ui test

---
 tests/ui/match_same_arms.rs      |  90 ------------------
 tests/ui/match_same_arms.stderr  | 158 +++++--------------------------
 tests/ui/match_same_arms2.rs     |  84 ++++++++++++++++
 tests/ui/match_same_arms2.stderr | 109 +++++++++++++++++++++
 4 files changed, 219 insertions(+), 222 deletions(-)
 create mode 100644 tests/ui/match_same_arms2.rs
 create mode 100644 tests/ui/match_same_arms2.stderr

diff --git a/tests/ui/match_same_arms.rs b/tests/ui/match_same_arms.rs
index b53ca79adb5..0b9342c9c42 100644
--- a/tests/ui/match_same_arms.rs
+++ b/tests/ui/match_same_arms.rs
@@ -1,20 +1,4 @@
 #![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 {
     A,
@@ -22,93 +6,19 @@ pub enum Abc {
     C,
 }
 
-#[allow(clippy::unused_unit)]
 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 {
         Abc::A => 0,
         Abc::B => 1,
         _ => 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) {
         (1, .., 3) => 42,
         (.., 3) => 42, //~ ERROR match arms have same body
         _ => 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 {
         42 => 1,
         51 => 1, //~ ERROR match arms have same body
diff --git a/tests/ui/match_same_arms.stderr b/tests/ui/match_same_arms.stderr
index f2153cfb3ad..0549886a1e8 100644
--- a/tests/ui/match_same_arms.stderr
+++ b/tests/ui/match_same_arms.stderr
@@ -1,245 +1,139 @@
 error: this `match` has identical arm bodies
-  --> $DIR/match_same_arms.rs:37: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
+  --> $DIR/match_same_arms.rs:13:14
    |
 LL |         _ => 0, //~ ERROR match arms have same body
    |              ^
    |
+   = note: `-D clippy::match-same-arms` implied by `-D warnings`
 note: same as this
-  --> $DIR/match_same_arms.rs:50:19
+  --> $DIR/match_same_arms.rs:11:19
    |
 LL |         Abc::A => 0,
    |                   ^
 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,
    |                   ^
 
 error: this `match` has identical arm bodies
-  --> $DIR/match_same_arms.rs:57:15
-   |
-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
+  --> $DIR/match_same_arms.rs:18:20
    |
 LL |         (.., 3) => 42, //~ ERROR match arms have same body
    |                    ^^
    |
 note: same as this
-  --> $DIR/match_same_arms.rs:96:23
+  --> $DIR/match_same_arms.rs:17:23
    |
 LL |         (1, .., 3) => 42,
    |                       ^^
 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,
    |         ^^^^^^^^^^
 
 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
    |               ^
    |
 note: same as this
-  --> $DIR/match_same_arms.rs:113:15
+  --> $DIR/match_same_arms.rs:23:15
    |
 LL |         42 => 1,
    |               ^
 help: consider refactoring into `42 | 51`
-  --> $DIR/match_same_arms.rs:113:9
+  --> $DIR/match_same_arms.rs:23:9
    |
 LL |         42 => 1,
    |         ^^
 
 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
    |               ^
    |
 note: same as this
-  --> $DIR/match_same_arms.rs:115:15
+  --> $DIR/match_same_arms.rs:25:15
    |
 LL |         41 => 2,
    |               ^
 help: consider refactoring into `41 | 52`
-  --> $DIR/match_same_arms.rs:115:9
+  --> $DIR/match_same_arms.rs:25:9
    |
 LL |         41 => 2,
    |         ^^
 
 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
    |              ^
    |
 note: same as this
-  --> $DIR/match_same_arms.rs:121:14
+  --> $DIR/match_same_arms.rs:31:14
    |
 LL |         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,
    |         ^
 
 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
    |              ^
    |
 note: same as this
-  --> $DIR/match_same_arms.rs:121:14
+  --> $DIR/match_same_arms.rs:31:14
    |
 LL |         1 => 2,
    |              ^
 help: consider refactoring into `1 | 3`
-  --> $DIR/match_same_arms.rs:121:9
+  --> $DIR/match_same_arms.rs:31:9
    |
 LL |         1 => 2,
    |         ^
 
 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
    |              ^
    |
 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
    |              ^
 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
    |         ^
 
 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(),
    |                                                       ^^^^^^^^^^^^^^^^
    |
 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(),
    |                                                      ^^^^^^^^^^^^^^^^
 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(),
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 13 previous errors
+error: aborting due to 8 previous errors
 
diff --git a/tests/ui/match_same_arms2.rs b/tests/ui/match_same_arms2.rs
new file mode 100644
index 00000000000..21b1c439e84
--- /dev/null
+++ b/tests/ui/match_same_arms2.rs
@@ -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() {}
diff --git a/tests/ui/match_same_arms2.stderr b/tests/ui/match_same_arms2.stderr
new file mode 100644
index 00000000000..e34c2c30ab8
--- /dev/null
+++ b/tests/ui/match_same_arms2.stderr
@@ -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
+