diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-07-09 21:01:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-09 21:01:53 +0200 |
| commit | e6f68a93b3041f65d36c6c708d8a451cc29ef560 (patch) | |
| tree | 955d1205a058e62d52cb4f3e144f40a89658e817 | |
| parent | 8e793439a4e5eb45b48a76313b9d58d446c7805e (diff) | |
| parent | 4becbf3a7936d25de06265d934378996eea2f857 (diff) | |
| download | rust-e6f68a93b3041f65d36c6c708d8a451cc29ef560.tar.gz rust-e6f68a93b3041f65d36c6c708d8a451cc29ef560.zip | |
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.
| -rw-r--r-- | src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr | 26 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs b/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs new file mode 100644 index 00000000000..f45370e5c2e --- /dev/null +++ b/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs @@ -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() { } diff --git a/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr b/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr new file mode 100644 index 00000000000..4c70a8475f2 --- /dev/null +++ b/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr @@ -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`. |
