``` rust trait Foo { type Ty; } impl Foo for () { type Ty = (); type Ty = usize; } fn main() { let _: <() as Foo>::Ty = (); } ``` This erroneously parses and compiles fine, the compiler seems to use the first definition of `Ty` in the impl. This might have been introduced by #23265, ping @eddyb.