trait TraitA { type TypeA; } trait TraitD { type TypeD; } pub trait TraitB { type TypeB: TraitD; fn f(_: &::TypeD); } pub trait TraitC { type TypeC<'a>: TraitB; fn g<'a>(_: &< as TraitB>::TypeB as TraitA>::TypeA); //~^ ERROR the trait bound `<>::TypeC<'a> as TraitB>::TypeB: TraitA` is not satisfied } fn main() {}