// build-fail // compile-flags: -Zunleash-the-miri-inside-of-you // a test demonstrating why we do need to run static const qualification on associated constants // instead of just checking the final constant trait Foo { const X: T; } trait Bar> { const F: u32 = (U::X, 42).1; } impl Foo for () { const X: u32 = 42; } impl Foo> for String { const X: Vec = Vec::new(); } impl Bar for () {} impl Bar, String> for String {} fn main() { // this is fine, but would have been forbidden by the static checks on `F` let x = <() as Bar>::F; // this test only causes errors due to the line below, so post-monomorphization let y = , String>>::F; //~ ERROR erroneous constant }