]> git.lizzy.rs Git - rust.git/commitdiff
we now get 2 extra mismatched type errors
authorNiko Matsakis <niko@alum.mit.edu>
Thu, 19 Jul 2018 04:10:35 +0000 (00:10 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Sat, 21 Jul 2018 12:56:49 +0000 (15:56 +0300)
These new errors actually seem a *tad* clearer than the old one, so
that's good, but now there are 3. Maybe call it a wash?

src/test/ui/issue-20831-debruijn.rs
src/test/ui/issue-20831-debruijn.stderr

index 3f00f561ae96f4ee83461e4801f3e007cfb4fdff..6ad97d072df86ed49119f93a096678e728680faa 100644 (file)
@@ -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
index fc9a0fdbe54384397d97f8178b562e8569924bdc..556d8b402c4574f91e84cb867776c44d1ad895fd 100644 (file)
@@ -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`.