| //! Regression test for <https://github.com/rust-lang/rust/issues/41849>. |
| //! Evaluating const required to evaluate trait, which required variance |
| //! information, which required const to be evaluated. |
| //@ run-pass |
| |
| #![allow(dead_code)] |
| |
| use std::ops::Mul; |
| |
| const C: usize = 1; |
| const CAPACITY: usize = 1 * C; |
| |
| struct A<X> { |
| f: [X; CAPACITY], |
| } |
| |
| struct B<T> { |
| f: T, |
| } |
| |
| impl<T> Mul for B<T> { |
| type Output = Self; |
| fn mul(self, _rhs: B<T>) -> Self::Output { |
| self |
| } |
| } |
| |
| impl<T> Mul<usize> for B<T> { |
| type Output = Self; |
| fn mul(self, _rhs: usize) -> Self::Output { |
| self |
| } |
| } |
| |
| fn main() { |
| let a = A { f: [1] }; |
| let _ = B { f: a }; |
| } |