]> git.lizzy.rs Git - rust.git/commitdiff
Add regression test (#22872)
authorEsteban Küber <esteban@kuber.com.ar>
Wed, 10 Oct 2018 02:00:41 +0000 (19:00 -0700)
committerEsteban Küber <esteban@kuber.com.ar>
Wed, 10 Oct 2018 02:00:41 +0000 (19:00 -0700)
src/test/ui/issues/issue-22872.rs [new file with mode: 0644]
src/test/ui/issues/issue-22872.stderr [new file with mode: 0644]

diff --git a/src/test/ui/issues/issue-22872.rs b/src/test/ui/issues/issue-22872.rs
new file mode 100644 (file)
index 0000000..7a83b09
--- /dev/null
@@ -0,0 +1,23 @@
+trait Wrap<'b> {
+    fn foo(&'b mut self);
+}
+
+struct Wrapper<P>(P);
+
+impl<'b, P> Wrap<'b> for Wrapper<P>
+where P: Process<'b>,
+      <P as Process<'b>>::Item: Iterator {
+    fn foo(&mut self) {}
+}
+
+
+pub trait Process<'a> {
+    type Item;
+    fn bar(&'a self);
+}
+
+fn push_process<P>(process: P) where P: Process<'static> {
+    let _: Box<for<'b> Wrap<'b>> = Box::new(Wrapper(process));
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-22872.stderr b/src/test/ui/issues/issue-22872.stderr
new file mode 100644 (file)
index 0000000..231080a
--- /dev/null
@@ -0,0 +1,23 @@
+error[E0277]: the trait bound `for<'b> P: Process<'b>` is not satisfied
+  --> $DIR/issue-22872.rs:20:36
+   |
+LL |     let _: Box<for<'b> Wrap<'b>> = Box::new(Wrapper(process));
+   |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `for<'b> Process<'b>` is not implemented for `P`
+   |
+   = help: consider adding a `where for<'b> P: Process<'b>` bound
+   = note: required because of the requirements on the impl of `for<'b> Wrap<'b>` for `Wrapper<P>`
+   = note: required for the cast to the object type `dyn for<'b> Wrap<'b>`
+
+error[E0277]: `<P as Process<'b>>::Item` is not an iterator
+  --> $DIR/issue-22872.rs:20:36
+   |
+LL |     let _: Box<for<'b> Wrap<'b>> = Box::new(Wrapper(process));
+   |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ `<P as Process<'b>>::Item` is not an iterator
+   |
+   = help: the trait `for<'b> std::iter::Iterator` is not implemented for `<P as Process<'b>>::Item`
+   = note: required because of the requirements on the impl of `for<'b> Wrap<'b>` for `Wrapper<P>`
+   = note: required for the cast to the object type `dyn for<'b> Wrap<'b>`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.