| //@ 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; |
| }); |
| } |