28 lines
498 B
Rust
28 lines
498 B
Rust
//@ 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 `impl Future<Output = ()>` cannot be sent between threads safely
|
|
}
|