Skip to content

Commit

Permalink
Rollup merge of rust-lang#62520 - pnkfelix:add-test-for-42574, r=alex…
Browse files Browse the repository at this point in the history
…crichton

Regression test for issue 42574.

Cc rust-lang#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.
  • Loading branch information
Centril authored Jul 9, 2019
2 parents 8e79343 + 4becbf3 commit e6f68a9
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs
Original file line number Diff line number Diff line change
@@ -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() { }
26 changes: 26 additions & 0 deletions src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit e6f68a9

Please sign in to comment.