about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorKevin Per <kevin.per@protonmail.com>2021-02-09 17:18:28 +0000
committerKevin Per <kevin.per@protonmail.com>2021-02-24 07:07:53 +0000
commita3db47ab6c976137a26976d5c8060e7eadc05232 (patch)
treea15d4c1a3093ce2434a3b64169e92067d863955f /src/test/ui
parentfe1bf8e05c39bdcc73fc09e246b7209444e389bc (diff)
downloadrust-a3db47ab6c976137a26976d5c8060e7eadc05232.tar.gz
rust-a3db47ab6c976137a26976d5c8060e7eadc05232.zip
Add suggestion for iterators in iterators
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/issues/issue-81584.fixed8
-rw-r--r--src/test/ui/issues/issue-81584.rs8
-rw-r--r--src/test/ui/issues/issue-81584.stderr14
-rw-r--r--src/test/ui/static/static-reference-to-fn-2.stderr2
4 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-81584.fixed b/src/test/ui/issues/issue-81584.fixed
new file mode 100644
index 00000000000..1cad59f1062
--- /dev/null
+++ b/src/test/ui/issues/issue-81584.fixed
@@ -0,0 +1,8 @@
+// run-rustfix
+fn main() {
+        let _ = vec![vec![0, 1], vec![2]]
+            .into_iter()
+            .map(|y| y.iter().map(|x| x + 1).collect::<Vec<_>>())
+                  //~^ ERROR cannot return value referencing function parameter `y`
+            .collect::<Vec<_>>();
+}
diff --git a/src/test/ui/issues/issue-81584.rs b/src/test/ui/issues/issue-81584.rs
new file mode 100644
index 00000000000..452288db08b
--- /dev/null
+++ b/src/test/ui/issues/issue-81584.rs
@@ -0,0 +1,8 @@
+// run-rustfix
+fn main() {
+        let _ = vec![vec![0, 1], vec![2]]
+            .into_iter()
+            .map(|y| y.iter().map(|x| x + 1))
+                  //~^ ERROR cannot return value referencing function parameter `y`
+            .collect::<Vec<_>>();
+}
diff --git a/src/test/ui/issues/issue-81584.stderr b/src/test/ui/issues/issue-81584.stderr
new file mode 100644
index 00000000000..d57f1b778df
--- /dev/null
+++ b/src/test/ui/issues/issue-81584.stderr
@@ -0,0 +1,14 @@
+error[E0515]: cannot return value referencing function parameter `y`
+  --> $DIR/issue-81584.rs:5:22
+   |
+LL |             .map(|y| y.iter().map(|x| x + 1))
+   |                      -^^^^^^^^^^^^^^^^^^^^^^
+   |                      |
+   |                      returns a value referencing data owned by the current function
+   |                      `y` is borrowed here
+   |
+   = help: use `.collect()` to allocate the iterator
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/static/static-reference-to-fn-2.stderr b/src/test/ui/static/static-reference-to-fn-2.stderr
index 028e11a60ce..ff15884bd44 100644
--- a/src/test/ui/static/static-reference-to-fn-2.stderr
+++ b/src/test/ui/static/static-reference-to-fn-2.stderr
@@ -40,6 +40,8 @@ LL | |         statefn: &id(state1 as StateMachineFunc)
    | |                   ------------------------------ temporary value created here
 LL | |     }
    | |_____^ returns a value referencing data owned by the current function
+   |
+   = help: use `.collect()` to allocate the iterator
 
 error: aborting due to 4 previous errors