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