about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-09-25 10:46:14 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-09-25 14:45:18 -0700
commit04dd580f377f4a02feb828aece5c84201c825257 (patch)
treeb3313408b36a39d53f7745c4d3f4504d9a56ff15
parent363e382f5b3b7129927795b2e02e6a2069264ffe (diff)
downloadrust-04dd580f377f4a02feb828aece5c84201c825257.tar.gz
rust-04dd580f377f4a02feb828aece5c84201c825257.zip
unnecessary_clone: split rustfixable lint out into separate test
-rw-r--r--tests/ui/iter_cloned_collect.fixed22
-rw-r--r--tests/ui/iter_cloned_collect.rs25
-rw-r--r--tests/ui/iter_cloned_collect.stderr26
-rw-r--r--tests/ui/unnecessary_clone.rs23
-rw-r--r--tests/ui/unnecessary_clone.stderr28
5 files changed, 77 insertions, 47 deletions
diff --git a/tests/ui/iter_cloned_collect.fixed b/tests/ui/iter_cloned_collect.fixed
new file mode 100644
index 00000000000..2773227e26b
--- /dev/null
+++ b/tests/ui/iter_cloned_collect.fixed
@@ -0,0 +1,22 @@
+// run-rustfix
+
+#![allow(unused)]
+
+use std::collections::HashSet;
+use std::collections::VecDeque;
+
+fn main() {
+    let v = [1, 2, 3, 4, 5];
+    let v2: Vec<isize> = v.to_vec();
+    let v3: HashSet<isize> = v.iter().cloned().collect();
+    let v4: VecDeque<isize> = v.iter().cloned().collect();
+
+    // Handle macro expansion in suggestion
+    let _: Vec<isize> = vec![1, 2, 3].to_vec();
+
+    // Issue #3704
+    unsafe {
+        let _: Vec<u8> = std::ffi::CStr::from_ptr(std::ptr::null())
+            .to_bytes().to_vec();
+    }
+}
diff --git a/tests/ui/iter_cloned_collect.rs b/tests/ui/iter_cloned_collect.rs
new file mode 100644
index 00000000000..60a4eac23c7
--- /dev/null
+++ b/tests/ui/iter_cloned_collect.rs
@@ -0,0 +1,25 @@
+// run-rustfix
+
+#![allow(unused)]
+
+use std::collections::HashSet;
+use std::collections::VecDeque;
+
+fn main() {
+    let v = [1, 2, 3, 4, 5];
+    let v2: Vec<isize> = v.iter().cloned().collect();
+    let v3: HashSet<isize> = v.iter().cloned().collect();
+    let v4: VecDeque<isize> = v.iter().cloned().collect();
+
+    // Handle macro expansion in suggestion
+    let _: Vec<isize> = vec![1, 2, 3].iter().cloned().collect();
+
+    // Issue #3704
+    unsafe {
+        let _: Vec<u8> = std::ffi::CStr::from_ptr(std::ptr::null())
+            .to_bytes()
+            .iter()
+            .cloned()
+            .collect();
+    }
+}
diff --git a/tests/ui/iter_cloned_collect.stderr b/tests/ui/iter_cloned_collect.stderr
new file mode 100644
index 00000000000..b90a1e6c919
--- /dev/null
+++ b/tests/ui/iter_cloned_collect.stderr
@@ -0,0 +1,26 @@
+error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
+  --> $DIR/iter_cloned_collect.rs:10:27
+   |
+LL |     let v2: Vec<isize> = v.iter().cloned().collect();
+   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()`
+   |
+   = note: `-D clippy::iter-cloned-collect` implied by `-D warnings`
+
+error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
+  --> $DIR/iter_cloned_collect.rs:15:38
+   |
+LL |     let _: Vec<isize> = vec![1, 2, 3].iter().cloned().collect();
+   |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()`
+
+error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
+  --> $DIR/iter_cloned_collect.rs:20:24
+   |
+LL |               .to_bytes()
+   |  ________________________^
+LL | |             .iter()
+LL | |             .cloned()
+LL | |             .collect();
+   | |______________________^ help: try: `.to_vec()`
+
+error: aborting due to 3 previous errors
+
diff --git a/tests/ui/unnecessary_clone.rs b/tests/ui/unnecessary_clone.rs
index 4ff83511590..a0a50fee180 100644
--- a/tests/ui/unnecessary_clone.rs
+++ b/tests/ui/unnecessary_clone.rs
@@ -1,9 +1,9 @@
+// does not test any rustfixable lints
+
 #![warn(clippy::clone_on_ref_ptr)]
 #![allow(unused)]
 
 use std::cell::RefCell;
-use std::collections::HashSet;
-use std::collections::VecDeque;
 use std::rc::{self, Rc};
 use std::sync::{self, Arc};
 
@@ -66,25 +66,6 @@ fn clone_on_double_ref() {
     println!("{:p} {:p}", *y, z);
 }
 
-fn iter_clone_collect() {
-    let v = [1, 2, 3, 4, 5];
-    let v2: Vec<isize> = v.iter().cloned().collect();
-    let v3: HashSet<isize> = v.iter().cloned().collect();
-    let v4: VecDeque<isize> = v.iter().cloned().collect();
-
-    // Handle macro expansion in suggestion
-    let _: Vec<isize> = vec![1, 2, 3].iter().cloned().collect();
-
-    // Issue #3704
-    unsafe {
-        let _: Vec<u8> = std::ffi::CStr::from_ptr(std::ptr::null())
-            .to_bytes()
-            .iter()
-            .cloned()
-            .collect();
-    }
-}
-
 mod many_derefs {
     struct A;
     struct B;
diff --git a/tests/ui/unnecessary_clone.stderr b/tests/ui/unnecessary_clone.stderr
index b1388044c42..7ed1df8d703 100644
--- a/tests/ui/unnecessary_clone.stderr
+++ b/tests/ui/unnecessary_clone.stderr
@@ -78,35 +78,11 @@ help: or try being explicit about what type to clone
 LL |     let z: &Vec<_> = &std::vec::Vec<i32>::clone(y);
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
-  --> $DIR/unnecessary_clone.rs:71:27
-   |
-LL |     let v2: Vec<isize> = v.iter().cloned().collect();
-   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()`
-   |
-   = note: `-D clippy::iter-cloned-collect` implied by `-D warnings`
-
-error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
-  --> $DIR/unnecessary_clone.rs:76:38
-   |
-LL |     let _: Vec<isize> = vec![1, 2, 3].iter().cloned().collect();
-   |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()`
-
-error: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable
-  --> $DIR/unnecessary_clone.rs:81:24
-   |
-LL |               .to_bytes()
-   |  ________________________^
-LL | |             .iter()
-LL | |             .cloned()
-LL | |             .collect();
-   | |______________________^ help: try: `.to_vec()`
-
 error: using `clone` on a `Copy` type
-  --> $DIR/unnecessary_clone.rs:119:20
+  --> $DIR/unnecessary_clone.rs:100:20
    |
 LL |         let _: E = a.clone();
    |                    ^^^^^^^^^ help: try dereferencing it: `*****a`
 
-error: aborting due to 15 previous errors
+error: aborting due to 12 previous errors