| //@ compile-flags: -Z mir-opt-level=4 | |
| //@ build-pass | |
| // This used to ICE in const-prop due | |
| // to an empty ParamEnv being used during normalization | |
| // of a generic type | |
| fn main() { | |
| join_all::<u32>(); | |
| } | |
| trait Foo { | |
| type Item; | |
| } | |
| impl Foo for u32 { | |
| type Item = u8; | |
| } | |
| trait Bar { | |
| type Item2; | |
| } | |
| impl Bar for u8 { | |
| type Item2 = u64; | |
| } | |
| fn join_all<I>() | |
| where I: Foo, | |
| I::Item: Bar | |
| { | |
| Vec::<<I::Item as Bar>::Item2>::new(); // ICE occurs processing this line | |
| } |