we now get 2 extra mismatched type errors

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?
This commit is contained in:
Niko Matsakis 2018-07-19 00:10:35 -04:00
parent 0e47a4a9d3
commit 0d8f3b3628
2 changed files with 69 additions and 4 deletions

View 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

View 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`.