//@ compile-flags: -Znext-solver | |
//@ 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 future cannot be sent between threads safely | |
} |