diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2019-09-25 10:46:14 -0700 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-09-25 14:45:18 -0700 |
| commit | 04dd580f377f4a02feb828aece5c84201c825257 (patch) | |
| tree | b3313408b36a39d53f7745c4d3f4504d9a56ff15 | |
| parent | 363e382f5b3b7129927795b2e02e6a2069264ffe (diff) | |
| download | rust-04dd580f377f4a02feb828aece5c84201c825257.tar.gz rust-04dd580f377f4a02feb828aece5c84201c825257.zip | |
unnecessary_clone: split rustfixable lint out into separate test
| -rw-r--r-- | tests/ui/iter_cloned_collect.fixed | 22 | ||||
| -rw-r--r-- | tests/ui/iter_cloned_collect.rs | 25 | ||||
| -rw-r--r-- | tests/ui/iter_cloned_collect.stderr | 26 | ||||
| -rw-r--r-- | tests/ui/unnecessary_clone.rs | 23 | ||||
| -rw-r--r-- | tests/ui/unnecessary_clone.stderr | 28 |
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 |
