diff options
Diffstat (limited to 'tests/ui/traits/next-solver/coroutine.rs')
-rw-r--r-- | tests/ui/traits/next-solver/coroutine.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/traits/next-solver/coroutine.rs b/tests/ui/traits/next-solver/coroutine.rs new file mode 100644 index 000000000..727e23568 --- /dev/null +++ b/tests/ui/traits/next-solver/coroutine.rs @@ -0,0 +1,32 @@ +// compile-flags: -Znext-solver +// edition: 2021 +// revisions: pass fail +//[pass] check-pass + +#![feature(coroutine_trait, coroutines)] + +use std::ops::Coroutine; + +struct A; +struct B; +struct C; + +fn needs_coroutine(_: impl Coroutine<A, Yield = B, Return = C>) {} + +#[cfg(fail)] +fn main() { + needs_coroutine(|| { + //[fail]~^ ERROR Coroutine<A>` is not satisfied + //[fail]~| ERROR as Coroutine<A>>::Yield == B` + //[fail]~| ERROR as Coroutine<A>>::Return == C` + yield (); + }); +} + +#[cfg(pass)] +fn main() { + needs_coroutine(|_: A| { + let _: A = yield B; + C + }) +} |