about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDavid Wood <david@davidtw.co>2018-09-17 10:48:44 +0200
committerDavid Wood <david@davidtw.co>2018-09-23 14:18:34 +0200
commit97bbcabef15309ba9ab9bc9d365d4524ce26fc09 (patch)
treecdf3386d9c1626992fb91d90d257a17d4e9cfec1 /src
parent876774bf71765cd7a1f2a8dfd775392bb162aae8 (diff)
downloadrust-97bbcabef15309ba9ab9bc9d365d4524ce26fc09.tar.gz
rust-97bbcabef15309ba9ab9bc9d365d4524ce26fc09.zip
Added multiple parameter closure test.
New test has multiple parameters in a closure with longer names in order
to clarify the issues relating to odd spans.
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/nll/issue-52534.rs8
-rw-r--r--src/test/ui/nll/issue-52534.stderr14
2 files changed, 20 insertions, 2 deletions
diff --git a/src/test/ui/nll/issue-52534.rs b/src/test/ui/nll/issue-52534.rs
index c75af27f83d..273c9b3c802 100644
--- a/src/test/ui/nll/issue-52534.rs
+++ b/src/test/ui/nll/issue-52534.rs
@@ -14,9 +14,17 @@
 fn foo(_: impl FnOnce(&u32) -> &u32) {
 }
 
+fn baz(_: impl FnOnce(&u32, u32) -> &u32) {
+}
+
 fn bar() {
     let x = 22;
     foo(|a| &x)
 }
 
+fn foobar() {
+    let y = 22;
+    baz(|first, second| &y)
+}
+
 fn main() { }
diff --git a/src/test/ui/nll/issue-52534.stderr b/src/test/ui/nll/issue-52534.stderr
index 032aa218d4a..873f17d8deb 100644
--- a/src/test/ui/nll/issue-52534.stderr
+++ b/src/test/ui/nll/issue-52534.stderr
@@ -1,5 +1,5 @@
 error[E0597]: `x` does not live long enough
-  --> $DIR/issue-52534.rs:19:14
+  --> $DIR/issue-52534.rs:22:14
    |
 LL |     foo(|a| &x)
    |           -  ^ `x` would have to be valid for `'0`
@@ -8,6 +8,16 @@ LL |     foo(|a| &x)
 LL | }
    | - ...but `x` is only valid for the duration of the `bar` function, so it is dropped here while still borrowed
 
-error: aborting due to previous error
+error[E0597]: `y` does not live long enough
+  --> $DIR/issue-52534.rs:27:26
+   |
+LL |     baz(|first, second| &y)
+   |               -          ^ `y` would have to be valid for `'0`
+   |               |
+   |               has type `&'0 u32`
+LL | }
+   | - ...but `y` is only valid for the duration of the `foobar` function, so it is dropped here while still borrowed
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0597`.