// Regression test for soundness issue #114061: // "Coherence incorrectly considers `unnormalizable_projection: Trait` to not hold even if it could" #![crate_type = "lib"] //@ revisions: classic next //@[next] compile-flags: -Znext-solver pub 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> Box<>::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 = Local; // } // // impl WhereBound for Box {} // // fn impls_trait() {} // // fn main() { // impls_trait::>(); // }