]> git.lizzy.rs Git - rust.git/commitdiff
add regression test for #60218
authorNiko Matsakis <niko@alum.mit.edu>
Fri, 20 Sep 2019 20:54:27 +0000 (16:54 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Thu, 3 Oct 2019 09:59:18 +0000 (05:59 -0400)
src/test/ui/issues/issue-60218.rs [new file with mode: 0644]
src/test/ui/issues/issue-60218.stderr [new file with mode: 0644]

diff --git a/src/test/ui/issues/issue-60218.rs b/src/test/ui/issues/issue-60218.rs
new file mode 100644 (file)
index 0000000..4926691
--- /dev/null
@@ -0,0 +1,19 @@
+// Regression test for #60218
+//
+// This was reported to cause ICEs.
+
+use std::iter::Map;
+
+pub trait Foo {}
+
+pub fn trigger_error<I, F>(iterable: I, functor: F)
+where
+    for<'t> &'t I: IntoIterator,
+for<'t> Map<<&'t I as IntoIterator>::IntoIter, F>: Iterator,
+for<'t> <Map<<&'t I as IntoIterator>::IntoIter, F> as Iterator>::Item: Foo,
+{
+}
+
+fn main() {
+    trigger_error(vec![], |x: &u32| x) //~ ERROR E0277
+}
diff --git a/src/test/ui/issues/issue-60218.stderr b/src/test/ui/issues/issue-60218.stderr
new file mode 100644 (file)
index 0000000..a9970cc
--- /dev/null
@@ -0,0 +1,15 @@
+error[E0277]: the trait bound `for<'t> <std::iter::Map<<&'t _ as std::iter::IntoIterator>::IntoIter, _> as std::iter::Iterator>::Item: Foo` is not satisfied
+  --> $DIR/issue-60218.rs:18:5
+   |
+LL | pub fn trigger_error<I, F>(iterable: I, functor: F)
+   |        -------------
+...
+LL | for<'t> <Map<<&'t I as IntoIterator>::IntoIter, F> as Iterator>::Item: Foo,
+   |                                                                        --- required by this bound in `trigger_error`
+...
+LL |     trigger_error(vec![], |x: &u32| x)
+   |     ^^^^^^^^^^^^^ the trait `for<'t> Foo` is not implemented for `<std::iter::Map<<&'t _ as std::iter::IntoIterator>::IntoIter, _> as std::iter::Iterator>::Item`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.