about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/issue-20831-debruijn.rs2
-rw-r--r--src/test/ui/issue-20831-debruijn.stderr71
2 files changed, 69 insertions, 4 deletions
diff --git a/src/test/ui/issue-20831-debruijn.rs b/src/test/ui/issue-20831-debruijn.rs
index 3f00f561ae9..6ad97d072df 100644
--- a/src/test/ui/issue-20831-debruijn.rs
+++ b/src/test/ui/issue-20831-debruijn.rs
@@ -38,6 +38,8 @@ impl<'a> Publisher<'a> for MyStruct<'a> {
     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
         // Not obvious, but there is an implicit lifetime here -------^
         //~^^ ERROR cannot infer
+        //~| ERROR mismatched types
+        //~| ERROR mismatched types
         //
         // The fact that `Publisher` is using an implicit lifetime is
         // what was causing the debruijn accounting to be off, so
diff --git a/src/test/ui/issue-20831-debruijn.stderr b/src/test/ui/issue-20831-debruijn.stderr
index fc9a0fdbe54..556d8b402c4 100644
--- a/src/test/ui/issue-20831-debruijn.stderr
+++ b/src/test/ui/issue-20831-debruijn.stderr
@@ -1,10 +1,72 @@
+error[E0308]: mismatched types
+  --> $DIR/issue-20831-debruijn.rs:38:5
+   |
+LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
+LL | |         // Not obvious, but there is an implicit lifetime here -------^
+LL | |         //~^^ ERROR cannot infer
+LL | |         //~| ERROR mismatched types
+...  |
+LL | |         self.sub = t;
+LL | |     }
+   | |_____^ lifetime mismatch
+   |
+   = note: expected type `'a`
+              found type ``
+note: the anonymous lifetime #2 defined on the method body at 38:5...
+  --> $DIR/issue-20831-debruijn.rs:38:5
+   |
+LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
+LL | |         // Not obvious, but there is an implicit lifetime here -------^
+LL | |         //~^^ ERROR cannot infer
+LL | |         //~| ERROR mismatched types
+...  |
+LL | |         self.sub = t;
+LL | |     }
+   | |_____^
+note: ...does not necessarily outlive the lifetime 'a as defined on the impl at 36:6
+  --> $DIR/issue-20831-debruijn.rs:36:6
+   |
+LL | impl<'a> Publisher<'a> for MyStruct<'a> {
+   |      ^^
+
+error[E0308]: mismatched types
+  --> $DIR/issue-20831-debruijn.rs:38:5
+   |
+LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
+LL | |         // Not obvious, but there is an implicit lifetime here -------^
+LL | |         //~^^ ERROR cannot infer
+LL | |         //~| ERROR mismatched types
+...  |
+LL | |         self.sub = t;
+LL | |     }
+   | |_____^ lifetime mismatch
+   |
+   = note: expected type `'a`
+              found type ``
+note: the lifetime 'a as defined on the impl at 36:6...
+  --> $DIR/issue-20831-debruijn.rs:36:6
+   |
+LL | impl<'a> Publisher<'a> for MyStruct<'a> {
+   |      ^^
+note: ...does not necessarily outlive the anonymous lifetime #2 defined on the method body at 38:5
+  --> $DIR/issue-20831-debruijn.rs:38:5
+   |
+LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
+LL | |         // Not obvious, but there is an implicit lifetime here -------^
+LL | |         //~^^ ERROR cannot infer
+LL | |         //~| ERROR mismatched types
+...  |
+LL | |         self.sub = t;
+LL | |     }
+   | |_____^
+
 error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements
   --> $DIR/issue-20831-debruijn.rs:38:5
    |
 LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
 LL | |         // Not obvious, but there is an implicit lifetime here -------^
 LL | |         //~^^ ERROR cannot infer
-LL | |         //
+LL | |         //~| ERROR mismatched types
 ...  |
 LL | |         self.sub = t;
 LL | |     }
@@ -16,7 +78,7 @@ note: first, the lifetime cannot outlive the anonymous lifetime #2 defined on th
 LL | /     fn subscribe(&mut self, t : Box<Subscriber<Input=<Self as Publisher>::Output> + 'a>) {
 LL | |         // Not obvious, but there is an implicit lifetime here -------^
 LL | |         //~^^ ERROR cannot infer
-LL | |         //
+LL | |         //~| ERROR mismatched types
 ...  |
 LL | |         self.sub = t;
 LL | |     }
@@ -30,6 +92,7 @@ LL | impl<'a> Publisher<'a> for MyStruct<'a> {
            expected Publisher<'_>
               found Publisher<'_>
 
-error: aborting due to previous error
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0495`.
+Some errors occurred: E0308, E0495.
+For more information about an error, try `rustc --explain E0308`.