| //@ 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 | |
| } |