// Tests that we cannot assume that an opaque type does *not* implement some // other trait #![feature(type_alias_impl_trait)] trait OpaqueTrait { } impl OpaqueTrait for T { } type OpaqueType = impl OpaqueTrait; fn mk_opaque() -> OpaqueType { () } #[derive(Debug)] struct D(T); trait AnotherTrait { } impl AnotherTrait for T { } // This is in error, because we cannot assume that `OpaqueType: !Debug` impl AnotherTrait for D { //~^ ERROR conflicting implementations of trait `AnotherTrait` for type `D` } fn main() {}