// A regression test for #129444. This previously ICE'd as // computing the best obligation for one ambiguous obligation // added spurious inference constraints which caused another // candidate to pass. trait Trait { type Assoc; } struct W(*mut T); impl Trait for W>> {} //~^ ERROR the trait bound `W>: Trait` is not satisfied //~| ERROR the trait bound `W: Trait` is not satisfied //~| ERROR the trait bound `T: Trait` is not satisfied //~| ERROR not all trait items implemented, missing: `Assoc` trait NoOverlap {} impl NoOverlap for T {} impl> NoOverlap for W {} //~^ ERROR conflicting implementations of trait `NoOverlap` for type `W>>>` fn main() {}