Rollup merge of #62520 - pnkfelix:add-test-for-42574, r=alexcrichton

Regression test for issue 42574.

Cc #42574.

I'm not going to say this *closes* that issue yet, for two reasons:

 1. I am still confused about some aspects of the behavior we are observing that bug

 2. The "fix" to the diagnostic relies on full NLL (`#![feature(nll)]`); migration mode still has a subpar diagnostic.
This commit is contained in:
Mazdak Farrokhzad 2019-07-09 21:01:53 +02:00 committed by GitHub
commit e6f68a93b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 0 deletions

View file

@ -0,0 +1,13 @@
// This test illustrates a case where full NLL (enabled by the feature
// switch below) produces superior diagnostics to the NLL-migrate
// mode.
#![feature(nll)]
fn doit(data: &'static mut ()) {
|| doit(data);
//~^ ERROR lifetime may not live long enough
//~| ERROR `data` does not live long enough
}
fn main() { }

View file

@ -0,0 +1,26 @@
error: lifetime may not live long enough
--> $DIR/issue-42574-diagnostic-in-nested-closure.rs:8:8
|
LL | || doit(data);
| -- ^^^^^^^^^^ argument requires that `'1` must outlive `'static`
| |
| lifetime `'1` represents this closure's body
|
= note: closure implements `FnMut`, so references to captured variables can't escape the closure
error[E0597]: `data` does not live long enough
--> $DIR/issue-42574-diagnostic-in-nested-closure.rs:8:13
|
LL | || doit(data);
| -- -----^^^^-
| | | |
| | | borrowed value does not live long enough
| | argument requires that `data` is borrowed for `'static`
| value captured here
...
LL | }
| - `data` dropped here while still borrowed
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0597`.