// Make sure that we normalize bounds on associated types before checking them // as candidates. // check-pass trait Mul { type Output; } trait Matrix: Mul<::Row, Output = ()> { type Row; type Transpose: Matrix; } fn is_mul>() {} fn f() { // The unnormalized bound on `T::Transpose` is // `Mul<::Row` which has to be normalized to be // equal to `T::Row`. is_mul::(); } fn main() {}