//@ check-pass // Regression test for #126944. // Step 1: Create two names for a single type: `Thing` and `AlsoThing` struct Thing; struct Dummy; trait DummyTrait { type DummyType; } impl DummyTrait for Dummy { type DummyType = Thing; } type AlsoThing = ::DummyType; // Step 2: Create names for a single trait object type: `TraitObject` and `AlsoTraitObject` trait SomeTrait { type Item; } type TraitObject = dyn SomeTrait; type AlsoTraitObject = dyn SomeTrait; // Step 3: Force the compiler to check whether the two names are the same type trait Supertrait { type Foo; } trait Subtrait: Supertrait {} trait HasOutput { type Output; } fn foo() -> F::Output where F: HasOutput>, { todo!() } fn main() {}