// compile-flags: -Ztrait-solver=next -Zdrop-tracking-mir | |
// edition: 2021 | |
// revisions: pass fail | |
//[pass] check-pass | |
#![feature(negative_impls)] | |
struct NotSync; | |
impl !Sync for NotSync {} | |
async fn foo() { | |
#[cfg(pass)] | |
let x = &(); | |
#[cfg(fail)] | |
let x = &NotSync; | |
bar().await; | |
#[allow(dropping_references)] | |
drop(x); | |
} | |
async fn bar() {} | |
fn main() { | |
fn is_send(_: impl Send) {} | |
is_send(foo()); | |
//[fail]~^ ERROR `impl Future<Output = ()>` cannot be sent between threads safely | |
} |