From 97bbcabef15309ba9ab9bc9d365d4524ce26fc09 Mon Sep 17 00:00:00 2001 From: David Wood Date: Mon, 17 Sep 2018 10:48:44 +0200 Subject: [PATCH] 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. --- src/test/ui/nll/issue-52534.rs | 8 ++++++++ src/test/ui/nll/issue-52534.stderr | 14 ++++++++++++-- 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`. -- 2.44.0