// Regression test for soundness issue #114061: // "Coherence incorrectly considers `unnormalizable_projection: Trait` to not hold even if it could" #![crate_type = "lib"] trait WhereBound {} impl WhereBound for () {} pub trait WithAssoc<'a> { type Assoc; } // These two impls of `Trait` overlap: pub trait Trait {} impl Trait for T where T: 'static, for<'a> T: WithAssoc<'a>, for<'a> >::Assoc: WhereBound, { } impl Trait for Box {} //~ ERROR conflicting implementations of trait `Trait` for type `Box<_>` // A downstream crate could write: // // use upstream::*; // // struct Local; // impl WithAssoc<'_> for Box { // type Assoc = (); // } // // fn impls_trait() {} // // fn main() { // impls_trait::>(); // }