// build-fail // a test demonstrating that const qualification cannot prevent monomorphization time errors trait Foo { const X: u32; } trait Bar { const F: u32 = 100 / U::X; //~ ERROR evaluation of `>::F` failed } impl Foo for () { const X: u32 = 42; } impl Foo for String { const X: u32 = 0; } impl Bar<()> for () {} impl Bar for String {} fn main() { let x = <() as Bar<()>>::F; // this test only causes errors due to the line below, so post-monomorphization let y = >::F; //~ constant }