about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-09-06 15:52:48 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2019-09-26 06:44:57 +0200
commit487f8ab732beebb44c1d6d3530d49a9af1c31c4b (patch)
tree8e035a35da13b1076616799629fa875b0521fa35
parent6ec9b3a0b6510fcac75bd60e5a317de7f29310ef (diff)
downloadrust-487f8ab732beebb44c1d6d3530d49a9af1c31c4b.tar.gz
rust-487f8ab732beebb44c1d6d3530d49a9af1c31c4b.zip
add test for #53432.
-rw-r--r--src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs7
-rw-r--r--src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr15
2 files changed, 22 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs b/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs
new file mode 100644
index 00000000000..f1fd1b507c7
--- /dev/null
+++ b/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs
@@ -0,0 +1,7 @@
+fn main() {
+    let f = move || {};
+    let _action = move || {
+        || f() // The `nested` closure
+        //~^ ERROR lifetime may not live long enough
+    };
+}
diff --git a/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr b/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr
new file mode 100644
index 00000000000..3781691ff41
--- /dev/null
+++ b/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr
@@ -0,0 +1,15 @@
+error: lifetime may not live long enough
+  --> $DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:4:9
+   |
+LL |     let _action = move || {
+   |                   -------
+   |                   |     |
+   |                   |     return type of closure is [closure@$DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:4:9: 4:15 f:&'2 [closure@$DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:2:13: 2:23]]
+   |                   lifetime `'1` represents this closure's body
+LL |         || f() // The `nested` closure
+   |         ^^^^^^ returning this value requires that `'1` must outlive `'2`
+   |
+   = note: closure implements `Fn`, so references to captured variables can't escape the closure
+
+error: aborting due to previous error
+