about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-08-26 14:32:12 +0000
committerbors <bors@rust-lang.org>2019-08-26 14:32:12 +0000
commit949b347f654f40ed7e4ab9dedb9e2c9b0a8c2133 (patch)
treec9852db5b508f8fb513cf4ef1bf1e9874f6b1541
parentfea888f2ecd95d0a959637e9e0011a0f11bd9d72 (diff)
parent6d425a60a7e7d272a17449d85d7d590db1b2ce5e (diff)
downloadrust-949b347f654f40ed7e4ab9dedb9e2c9b0a8c2133.tar.gz
rust-949b347f654f40ed7e4ab9dedb9e2c9b0a8c2133.zip
Auto merge of #4444 - phansch:split_up_cmp_owned2, r=flip1995
Split up cmp_owned tests, add run-rustfix

Some of the cmp_owned tests emitted non-machine-applicable suggestions,
so I moved them to `tests/ui/cmp_owned/without_suggestion.rs` and added
`// run-rustfix` to the other half.

changelog: none

cc #3630
-rw-r--r--tests/ui/cmp_owned/with_suggestion.fixed72
-rw-r--r--tests/ui/cmp_owned/with_suggestion.rs (renamed from tests/ui/cmp_owned.rs)18
-rw-r--r--tests/ui/cmp_owned/with_suggestion.stderr (renamed from tests/ui/cmp_owned.stderr)32
-rw-r--r--tests/ui/cmp_owned/without_suggestion.rs52
-rw-r--r--tests/ui/cmp_owned/without_suggestion.stderr22
5 files changed, 160 insertions, 36 deletions
diff --git a/tests/ui/cmp_owned/with_suggestion.fixed b/tests/ui/cmp_owned/with_suggestion.fixed
new file mode 100644
index 00000000000..05fb96339e3
--- /dev/null
+++ b/tests/ui/cmp_owned/with_suggestion.fixed
@@ -0,0 +1,72 @@
+// run-rustfix
+
+#[warn(clippy::cmp_owned)]
+#[allow(clippy::unnecessary_operation, clippy::no_effect, unused_must_use, clippy::eq_op)]
+fn main() {
+    fn with_to_string(x: &str) {
+        x != "foo";
+
+        "foo" != x;
+    }
+
+    let x = "oh";
+
+    with_to_string(x);
+
+    x != "foo";
+
+    x != "foo";
+
+    42.to_string() == "42";
+
+    Foo == Foo;
+
+    "abc".chars().filter(|c| *c != 'X');
+
+    "abc".chars().filter(|c| *c != 'X');
+}
+
+struct Foo;
+
+impl PartialEq for Foo {
+    // Allow this here, because it emits the lint
+    // without a suggestion. This is tested in
+    // `tests/ui/cmp_owned/without_suggestion.rs`
+    #[allow(clippy::cmp_owned)]
+    fn eq(&self, other: &Self) -> bool {
+        self.to_owned() == *other
+    }
+}
+
+impl ToOwned for Foo {
+    type Owned = Bar;
+    fn to_owned(&self) -> Bar {
+        Bar
+    }
+}
+
+#[derive(PartialEq)]
+struct Bar;
+
+impl PartialEq<Foo> for Bar {
+    fn eq(&self, _: &Foo) -> bool {
+        true
+    }
+}
+
+impl std::borrow::Borrow<Foo> for Bar {
+    fn borrow(&self) -> &Foo {
+        static FOO: Foo = Foo;
+        &FOO
+    }
+}
+
+#[derive(PartialEq)]
+struct Baz;
+
+impl ToOwned for Baz {
+    type Owned = Baz;
+    fn to_owned(&self) -> Baz {
+        Baz
+    }
+}
diff --git a/tests/ui/cmp_owned.rs b/tests/ui/cmp_owned/with_suggestion.rs
index a5f92b30bc2..0a02825ed82 100644
--- a/tests/ui/cmp_owned.rs
+++ b/tests/ui/cmp_owned/with_suggestion.rs
@@ -1,5 +1,7 @@
+// run-rustfix
+
 #[warn(clippy::cmp_owned)]
-#[allow(clippy::unnecessary_operation)]
+#[allow(clippy::unnecessary_operation, clippy::no_effect, unused_must_use, clippy::eq_op)]
 fn main() {
     fn with_to_string(x: &str) {
         x != "foo".to_string();
@@ -22,21 +24,15 @@ fn main() {
     "abc".chars().filter(|c| c.to_owned() != 'X');
 
     "abc".chars().filter(|c| *c != 'X');
-
-    let x = &Baz;
-    let y = &Baz;
-
-    y.to_owned() == *x;
-
-    let x = &&Baz;
-    let y = &Baz;
-
-    y.to_owned() == **x;
 }
 
 struct Foo;
 
 impl PartialEq for Foo {
+    // Allow this here, because it emits the lint
+    // without a suggestion. This is tested in
+    // `tests/ui/cmp_owned/without_suggestion.rs`
+    #[allow(clippy::cmp_owned)]
     fn eq(&self, other: &Self) -> bool {
         self.to_owned() == *other
     }
diff --git a/tests/ui/cmp_owned.stderr b/tests/ui/cmp_owned/with_suggestion.stderr
index 9be749f8d04..2f333e6ea8e 100644
--- a/tests/ui/cmp_owned.stderr
+++ b/tests/ui/cmp_owned/with_suggestion.stderr
@@ -1,5 +1,5 @@
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:5:14
+  --> $DIR/with_suggestion.rs:7:14
    |
 LL |         x != "foo".to_string();
    |              ^^^^^^^^^^^^^^^^^ help: try: `"foo"`
@@ -7,52 +7,34 @@ LL |         x != "foo".to_string();
    = note: `-D clippy::cmp-owned` implied by `-D warnings`
 
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:7:9
+  --> $DIR/with_suggestion.rs:9:9
    |
 LL |         "foo".to_string() != x;
    |         ^^^^^^^^^^^^^^^^^ help: try: `"foo"`
 
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:14:10
+  --> $DIR/with_suggestion.rs:16:10
    |
 LL |     x != "foo".to_owned();
    |          ^^^^^^^^^^^^^^^^ help: try: `"foo"`
 
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:16:10
+  --> $DIR/with_suggestion.rs:18:10
    |
 LL |     x != String::from("foo");
    |          ^^^^^^^^^^^^^^^^^^^ help: try: `"foo"`
 
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:20:5
+  --> $DIR/with_suggestion.rs:22:5
    |
 LL |     Foo.to_owned() == Foo;
    |     ^^^^^^^^^^^^^^ help: try: `Foo`
 
 error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:22:30
+  --> $DIR/with_suggestion.rs:24:30
    |
 LL |     "abc".chars().filter(|c| c.to_owned() != 'X');
    |                              ^^^^^^^^^^^^ help: try: `*c`
 
-error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:29:5
-   |
-LL |     y.to_owned() == *x;
-   |     ^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
-
-error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:34:5
-   |
-LL |     y.to_owned() == **x;
-   |     ^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
-
-error: this creates an owned instance just for comparison
-  --> $DIR/cmp_owned.rs:41:9
-   |
-LL |         self.to_owned() == *other
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
-
-error: aborting due to 9 previous errors
+error: aborting due to 6 previous errors
 
diff --git a/tests/ui/cmp_owned/without_suggestion.rs b/tests/ui/cmp_owned/without_suggestion.rs
new file mode 100644
index 00000000000..9ab8795474c
--- /dev/null
+++ b/tests/ui/cmp_owned/without_suggestion.rs
@@ -0,0 +1,52 @@
+#[allow(clippy::unnecessary_operation)]
+
+fn main() {
+    let x = &Baz;
+    let y = &Baz;
+    y.to_owned() == *x;
+
+    let x = &&Baz;
+    let y = &Baz;
+    y.to_owned() == **x;
+}
+
+struct Foo;
+
+impl PartialEq for Foo {
+    fn eq(&self, other: &Self) -> bool {
+        self.to_owned() == *other
+    }
+}
+
+impl ToOwned for Foo {
+    type Owned = Bar;
+    fn to_owned(&self) -> Bar {
+        Bar
+    }
+}
+
+#[derive(PartialEq)]
+struct Baz;
+
+impl ToOwned for Baz {
+    type Owned = Baz;
+    fn to_owned(&self) -> Baz {
+        Baz
+    }
+}
+
+#[derive(PartialEq)]
+struct Bar;
+
+impl PartialEq<Foo> for Bar {
+    fn eq(&self, _: &Foo) -> bool {
+        true
+    }
+}
+
+impl std::borrow::Borrow<Foo> for Bar {
+    fn borrow(&self) -> &Foo {
+        static FOO: Foo = Foo;
+        &FOO
+    }
+}
diff --git a/tests/ui/cmp_owned/without_suggestion.stderr b/tests/ui/cmp_owned/without_suggestion.stderr
new file mode 100644
index 00000000000..6e8a5ad2a17
--- /dev/null
+++ b/tests/ui/cmp_owned/without_suggestion.stderr
@@ -0,0 +1,22 @@
+error: this creates an owned instance just for comparison
+  --> $DIR/without_suggestion.rs:6:5
+   |
+LL |     y.to_owned() == *x;
+   |     ^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
+   |
+   = note: `-D clippy::cmp-owned` implied by `-D warnings`
+
+error: this creates an owned instance just for comparison
+  --> $DIR/without_suggestion.rs:10:5
+   |
+LL |     y.to_owned() == **x;
+   |     ^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
+
+error: this creates an owned instance just for comparison
+  --> $DIR/without_suggestion.rs:17:9
+   |
+LL |         self.to_owned() == *other
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating
+
+error: aborting due to 3 previous errors
+