//@ check-pass trait Trait where for<'a> Self::Gat<'a>: OtherTrait, for<'a, 'b, 'c> as OtherTrait>::OtherGat<'b>: HigherRanked<'c>, { type Gat<'a>; } trait OtherTrait { type OtherGat<'b>; } trait HigherRanked<'c> {} fn lower_ranked OtherTrait: HigherRanked<'c>>>() {} fn higher_ranked() where for<'a> T::Gat<'a>: OtherTrait, for<'a, 'b, 'c> as OtherTrait>::OtherGat<'b>: HigherRanked<'c>, { } fn test() { lower_ranked::>(); higher_ranked::(); } fn main() {}