diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2018-11-03 02:29:26 +0100 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2018-11-03 02:32:43 +0100 |
| commit | cc33aecb683b1cb08bd60ba1f24ef797827fda94 (patch) | |
| tree | a70603d01231c009c93cce97c74e1104253eecf7 /src | |
| parent | 5aeb6c756e4b6e28366dee28802022430c66605e (diff) | |
| download | rust-cc33aecb683b1cb08bd60ba1f24ef797827fda94.tar.gz rust-cc33aecb683b1cb08bd60ba1f24ef797827fda94.zip | |
Regression test for issue 55608.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/impl-trait/issue-55608-captures-empty-region.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/impl-trait/issue-55608-captures-empty-region.stderr | 11 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/impl-trait/issue-55608-captures-empty-region.rs b/src/test/ui/impl-trait/issue-55608-captures-empty-region.rs new file mode 100644 index 00000000000..7ebc348996f --- /dev/null +++ b/src/test/ui/impl-trait/issue-55608-captures-empty-region.rs @@ -0,0 +1,22 @@ +// This used to ICE because it creates an `impl Trait` that captures a +// hidden empty region. + +#![feature(conservative_impl_trait)] + +fn server() -> impl FilterBase2 { //~ ERROR [E0700] + segment2(|| { loop { } }).map2(|| "") +} + +trait FilterBase2 { + fn map2<F>(self, _fn: F) -> Map2<F> where Self: Sized { loop { } } +} + +struct Map2<F> { _func: F } + +impl<F> FilterBase2 for Map2<F> { } + +fn segment2<F>(_fn: F) -> Map2<F> where F: Fn() -> Result<(), ()> { + loop { } +} + +fn main() { server(); } diff --git a/src/test/ui/impl-trait/issue-55608-captures-empty-region.stderr b/src/test/ui/impl-trait/issue-55608-captures-empty-region.stderr new file mode 100644 index 00000000000..d1f147834d2 --- /dev/null +++ b/src/test/ui/impl-trait/issue-55608-captures-empty-region.stderr @@ -0,0 +1,11 @@ +error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds + --> $DIR/issue-55608-captures-empty-region.rs:6:16 + | +LL | fn server() -> impl FilterBase2 { //~ ERROR [E0700] + | ^^^^^^^^^^^^^^^^ + | + = note: hidden type `Map2<[closure@$DIR/issue-55608-captures-empty-region.rs:7:36: 7:41]>` captures an empty lifetime + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0700`. |
