about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTakayuki Nakata <f.seasons017@gmail.com>2020-10-25 23:55:41 +0900
committerTakayuki Nakata <f.seasons017@gmail.com>2020-10-26 00:01:20 +0900
commit2f5d418011f80d99e0e4c8ddea3980b6cdc8332d (patch)
treef772e9e25b9350b31d8e5bcc8659c4459cb20282
parent3ce820bf83657879493aa7b107634f1951e7c219 (diff)
downloadrust-2f5d418011f80d99e0e4c8ddea3980b6cdc8332d.tar.gz
rust-2f5d418011f80d99e0e4c8ddea3980b6cdc8332d.zip
Add test case
-rw-r--r--tests/ui/needless_collect_indirect.rs6
-rw-r--r--tests/ui/needless_collect_indirect.stderr15
2 files changed, 20 insertions, 1 deletions
diff --git a/tests/ui/needless_collect_indirect.rs b/tests/ui/needless_collect_indirect.rs
index 4cf03e82035..4f6e5357727 100644
--- a/tests/ui/needless_collect_indirect.rs
+++ b/tests/ui/needless_collect_indirect.rs
@@ -16,4 +16,10 @@ fn main() {
         .into_iter()
         .map(|x| (*x, *x + 1))
         .collect::<HashMap<_, _>>();
+
+    // #6202
+    let a = "a".to_string();
+    let sample = vec![a.clone(), "b".to_string(), "c".to_string()];
+    let non_copy_contains = sample.into_iter().collect::<Vec<_>>();
+    non_copy_contains.contains(&a);
 }
diff --git a/tests/ui/needless_collect_indirect.stderr b/tests/ui/needless_collect_indirect.stderr
index 7b8e227f304..fb807da5f8a 100644
--- a/tests/ui/needless_collect_indirect.stderr
+++ b/tests/ui/needless_collect_indirect.stderr
@@ -51,5 +51,18 @@ LL |
 LL |     sample.iter().any(|x| x == &5);
    |
 
-error: aborting due to 4 previous errors
+error: avoid using `collect()` when not needed
+  --> $DIR/needless_collect_indirect.rs:23:5
+   |
+LL | /     let non_copy_contains = sample.into_iter().collect::<Vec<_>>();
+LL | |     non_copy_contains.contains(&a);
+   | |____^
+   |
+help: Check if the original Iterator contains an element instead of collecting then checking
+   |
+LL |     
+LL |     sample.into_iter().any(|x| x == a);
+   |
+
+error: aborting due to 5 previous errors