fda3378e3f
They used to be covered by `optin_builtin_traits` but negative impls are now applicable to all traits, not just auto traits. This also adds docs in the unstable book for the current state of auto traits.
27 lines
533 B
Rust
27 lines
533 B
Rust
#![feature(optin_builtin_traits)]
|
|
#![feature(negative_impls)]
|
|
// edition:2018
|
|
|
|
// This tests the the unspecialized async-await-specific error when futures don't implement an
|
|
// auto trait (which is not Send or Sync) due to some type that was captured.
|
|
|
|
auto trait Qux { }
|
|
|
|
struct Foo;
|
|
|
|
impl !Qux for Foo {}
|
|
|
|
fn is_qux<T: Qux>(t: T) { }
|
|
|
|
async fn bar() {
|
|
let x = Foo;
|
|
baz().await;
|
|
}
|
|
|
|
async fn baz() { }
|
|
|
|
fn main() {
|
|
is_qux(bar());
|
|
//~^ ERROR the trait bound `Foo: Qux` is not satisfied in `impl std::future::Future`
|
|
}
|