2021-03-04 07:21:13 -06:00
|
|
|
// compile-flags: -Z mir-opt-level=4
|
2020-01-01 23:42:31 -06:00
|
|
|
// 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
|
|
|
|
}
|