Skip to content

Commit

Permalink
we now get 2 extra mismatched type errors
Browse files Browse the repository at this point in the history
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?
  • Loading branch information
nikomatsakis committed Jul 21, 2018
1 parent 0e47a4a commit 0d8f3b3
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/test/ui/issue-20831-debruijn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
71 changes: 67 additions & 4 deletions src/test/ui/issue-20831-debruijn.stderr
Original file line number Diff line number Diff line change
@@ -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 | | }
Expand All @@ -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 | | }
Expand All @@ -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`.

0 comments on commit 0d8f3b3

Please sign in to comment.