3 // a test demonstrating why we do need to run static const qualification on associated constants
4 // instead of just checking the final constant
10 trait Bar<T, U: Foo<T>> {
11 const F: u32 = (U::X, 42).1; //~ ERROR destructors cannot be evaluated at compile-time
14 impl Foo<u32> for () {
18 impl Foo<Vec<u32>> for String {
19 const X: Vec<u32> = Vec::new();
22 impl Bar<u32, ()> for () {}
23 impl Bar<Vec<u32>, String> for String {}
26 let x = <() as Bar<u32, ()>>::F;
27 let y = <String as Bar<Vec<u32>, String>>::F;