diff --git a/src/test/ui/nll/issue-52534.rs b/src/test/ui/nll/issue-52534.rs index c75af27f83da..273c9b3c8020 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 032aa218d4a8..873f17d8deb1 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`.