rust/src/test/ui/generator
Mazdak Farrokhzad c22566d96d
Rollup merge of #59132 - nikomatsakis:issue-53548-generator-bound, r=pnkfelix
ignore higher-ranked object bound conditions created by WF

In the `issue-53548` test added in this PR, the `Box<dyn Trait>` type is expanded to `Box<dyn Trait + 'static>`, but the generator "witness" that results is `for<'r> { Box<dyn Trait + 'r> }`. The WF code was encountering an ICE (when debug-assertions were enabled) and an unexpected compilation error (without debug-asserions) when trying to process this `'r` region bound. In particular, to be WF, the region bound must meet the requirements of the trait, and hence we got `for<'r> { 'r: 'static }`. This would ICE because the `Binder` constructor we were using was assering that no higher-ranked regions were involved (because the WF code is supposed to skip those). The error (if debug-asserions were disabled) came because we obviously cannot prove that `'r: 'static` for any region `'r`.  Pursuant with
our "lazy WF" strategy for higher-ranked regions, the fix is not to require that `for<'r> { 'r: 'static }` holds (this is also analogous to what we would do for higher-ranked regions appearing within the trait in other positions).

Fixes #53548

r? @pnkfelix
2019-03-13 03:33:56 +01:00
..
auto-trait-regions.rs apply the same logic to ConcreteFailure errors 2019-01-02 17:35:06 -05:00
auto-trait-regions.stderr Refer to synthetically named lifetimes as "some specific lifetime" rather than "the specific lifetime" 2019-01-28 23:12:13 +01:00
borrowing.nll.stderr Update NLL tests 2019-03-11 23:18:35 +03:00
borrowing.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
borrowing.stderr Update tests 2019-03-11 23:10:26 +03:00
dropck.nll.stderr Update NLL tests 2019-03-11 23:18:35 +03:00
dropck.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
dropck.stderr Update tests 2019-03-11 23:10:26 +03:00
generator-region-requirements.ast.stderr Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
generator-region-requirements.nll.stderr Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
generator-region-requirements.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
generator-with-nll.rs Remove licenses 2018-12-25 21:08:33 -07:00
generator-with-nll.stderr Update tests 2019-03-11 23:10:26 +03:00
issue-48048.rs Remove licenses 2018-12-25 21:08:33 -07:00
issue-48048.stderr Update tests 2019-03-11 23:10:26 +03:00
issue-53548-1.rs ignore higher-ranked WF requirements for trait objects 2019-03-12 10:57:06 -04:00
issue-53548.rs ignore higher-ranked WF requirements for trait objects 2019-03-12 10:57:06 -04:00
no-arguments-on-generators.rs Remove licenses 2018-12-25 21:08:33 -07:00
no-arguments-on-generators.stderr Update tests 2019-03-11 23:10:26 +03:00
not-send-sync.rs Remove licenses 2018-12-25 21:08:33 -07:00
not-send-sync.stderr Remove licenses 2018-12-25 21:08:33 -07:00
pattern-borrow.rs Remove licenses 2018-12-25 21:08:33 -07:00
pattern-borrow.stderr Update tests 2019-03-11 23:10:26 +03:00
ref-escapes-but-not-over-yield.nll.stderr Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
ref-escapes-but-not-over-yield.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
ref-escapes-but-not-over-yield.stderr Update tests 2019-03-11 23:10:26 +03:00
sized-yield.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
sized-yield.stderr Update tests 2019-03-11 23:10:26 +03:00
static-not-unpin.rs Temporary workaround for travis diagnostic difference 2019-01-27 22:59:00 +01:00
static-not-unpin.stderr Update tests 2019-03-11 23:10:26 +03:00
yield-in-args.nll.stderr Update NLL tests 2019-03-11 23:18:35 +03:00
yield-in-args.rs Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-args.stderr Update tests 2019-03-11 23:10:26 +03:00
yield-in-const.rs Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-const.stderr Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-function.rs Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-function.stderr Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-static.rs Remove licenses 2018-12-25 21:08:33 -07:00
yield-in-static.stderr Remove licenses 2018-12-25 21:08:33 -07:00
yield-while-iterating.nll.stderr Update NLL tests 2019-03-11 23:18:35 +03:00
yield-while-iterating.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
yield-while-iterating.stderr Update tests 2019-03-11 23:10:26 +03:00
yield-while-local-borrowed.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
yield-while-local-borrowed.stderr Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
yield-while-ref-reborrowed.nll.stderr Update NLL tests 2019-03-11 23:18:35 +03:00
yield-while-ref-reborrowed.rs Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
yield-while-ref-reborrowed.stderr Update tests 2019-03-11 23:10:26 +03:00