// run-pass
// Regression test for an obscure issue with the projection cache.

fn into_iter<I: Iterator>(a: &I) -> Groups<I> {
    Groups { _a: a }
}

pub struct Groups<'a, I: 'a> {
    _a: &'a I,
}

impl<'a, I: Iterator> Iterator for Groups<'a, I> {
    type Item = Group<'a, I>;
    fn next(&mut self) -> Option<Self::Item> {
        None
    }
}

pub struct Group<'a, I: Iterator + 'a>
    where I::Item: 'a       // <-- needed to trigger ICE!
{
    _phantom: &'a (),
    _ice_trigger: I::Item,  // <-- needed to trigger ICE!
}


fn main() {
    let _ = into_iter(&[0].iter().map(|_| 0)).map(|grp| {
        let _g = grp;
    });
}
