| //@ revisions: current next | |
| //@ ignore-compare-mode-next-solver (explicit revisions) | |
| //@[next] compile-flags: -Znext-solver | |
| //@ run-pass | |
| #![feature(coroutines, coroutine_trait, stmt_expr_attributes)] | |
| #![allow(dropping_copy_types)] | |
| use std::marker::PhantomPinned; | |
| fn assert_unpin<G: Unpin>(_: G) { | |
| } | |
| fn main() { | |
| // Even though this coroutine holds a `PhantomPinned` in its environment, it | |
| // remains `Unpin`. | |
| assert_unpin(#[coroutine] || { | |
| let pinned = PhantomPinned; | |
| yield; | |
| drop(pinned); | |
| }); | |
| } |