1 // compile-flags: -Zverbose
3 // Same as: src/test/ui/generator/issue-68112.stderr
5 #![feature(generators, generator_trait)]
11 ops::{Generator, GeneratorState},
14 pub struct Ready<T>(Option<T>);
15 impl<T> Generator<()> for Ready<T> {
18 fn resume(mut self: Pin<&mut Self>, _args: ()) -> GeneratorState<(), T> {
19 GeneratorState::Complete(self.0.take().unwrap())
22 pub fn make_gen1<T>(t: T) -> Ready<T> {
26 fn require_send(_: impl Send) {}
28 fn make_non_send_generator() -> impl Generator<Return = Arc<RefCell<i32>>> {
29 make_gen1(Arc::new(RefCell::new(0)))
34 let _non_send_gen = make_non_send_generator();
37 require_send(send_gen);
38 //~^ ERROR generator cannot be sent between threads
41 pub fn make_gen2<T>(t: T) -> impl Generator<Return = T> {
47 fn make_non_send_generator2() -> impl Generator<Return = Arc<RefCell<i32>>> {
48 make_gen2(Arc::new(RefCell::new(0)))
53 let _non_send_gen = make_non_send_generator2();
56 require_send(send_gen);
57 //~^ ERROR `RefCell<i32>` cannot be shared between threads safely