about summary refs log tree commit diff
path: root/tests/ui/issues/issue-42552.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-42552.rs')
-rw-r--r--tests/ui/issues/issue-42552.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-42552.rs b/tests/ui/issues/issue-42552.rs
new file mode 100644
index 00000000000..50d28a2f0c6
--- /dev/null
+++ b/tests/ui/issues/issue-42552.rs
@@ -0,0 +1,31 @@
+// 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;
+    });
+}