diff options
Diffstat (limited to 'tests/ui/generator/issue-53548.rs')
-rw-r--r-- | tests/ui/generator/issue-53548.rs | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/tests/ui/generator/issue-53548.rs b/tests/ui/generator/issue-53548.rs deleted file mode 100644 index 3ebabb914..000000000 --- a/tests/ui/generator/issue-53548.rs +++ /dev/null @@ -1,38 +0,0 @@ -// Regression test for #53548. The `Box<dyn Trait>` type below 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). -// -// check-pass - -#![feature(generators)] - -use std::cell::RefCell; -use std::rc::Rc; - -trait Trait: 'static {} - -struct Store<C> { - inner: Rc<RefCell<Option<C>>>, -} - -fn main() { - Box::new(static move || { - let store = Store::<Box<dyn Trait>> { - inner: Default::default(), - }; - yield (); - }); -} |