//@ known-bug: #113846 trait Www { type W; } trait Xxx: Www { type X; } trait Yyy: Xxx {} trait Zzz<'a>: Yyy + Xxx { type Z; } trait Aaa { type Y: Yyy; } trait Bbb: Aaa { type B: for<'a> Zzz<'a>; } impl Bbb for T where T: Aaa, T::Y: for<'a> Zzz<'a>, { type B = T::Y; } pub fn main() {}