Description
https://rust.godbolt.org/z/8fzsP4MbE
trait Super {
type SuperAssoc;
}
trait Trait: Super<SuperAssoc = Self::TraitAssoc> {
type TraitAssoc;
}
impl<T, U> Trait for T
where
T: Super<SuperAssoc = U>,
{
type TraitAssoc = U;
}
fn overflow<T: Trait>() {
let x: <T as Trait>::TraitAssoc;
}
normalizing <T as Trait>::TraitAssoc
in the elaborated environment [T: Trait, T: Super, <T as Super>::SuperAssoc = <T as Trait>::TraitAssoc]
has a single impl candidate, which uses the environment to normalize <T as Trait>::TraitAssoc
to itself :3