#![feature(coroutines)] | |
#![feature(negative_impls)] | |
struct NotSend; | |
struct NotSync; | |
impl !Send for NotSend {} | |
impl !Sync for NotSync {} | |
fn main() { | |
fn assert_sync<T: Sync>(_: T) {} | |
fn assert_send<T: Send>(_: T) {} | |
assert_sync(|| { | |
//~^ ERROR: coroutine cannot be shared between threads safely | |
let a = NotSync; | |
yield; | |
drop(a); | |
}); | |
assert_send(|| { | |
//~^ ERROR: coroutine cannot be sent between threads safely | |
let a = NotSend; | |
yield; | |
drop(a); | |
}); | |
} |