diff options
Diffstat (limited to 'src/test/ui/associated-types/associate-type-bound-normalization.rs')
-rw-r--r-- | src/test/ui/associated-types/associate-type-bound-normalization.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/associate-type-bound-normalization.rs b/src/test/ui/associated-types/associate-type-bound-normalization.rs new file mode 100644 index 000000000..db092970f --- /dev/null +++ b/src/test/ui/associated-types/associate-type-bound-normalization.rs @@ -0,0 +1,25 @@ +// Make sure that we normalize bounds on associated types before checking them +// as candidates. + +// check-pass + +trait Mul<T> { + type Output; +} + +trait Matrix: Mul<<Self as Matrix>::Row, Output = ()> { + type Row; + + type Transpose: Matrix<Row = Self::Row>; +} + +fn is_mul<S, T: Mul<S, Output = ()>>() {} + +fn f<T: Matrix>() { + // The unnormalized bound on `T::Transpose` is + // `Mul<<T::Transpose as Matrix>::Row` which has to be normalized to be + // equal to `T::Row`. + is_mul::<T::Row, T::Transpose>(); +} + +fn main() {} |