error[E0308]: mismatched `self` parameter type
  --> $DIR/issue-17740.rs:6:18
   |
LL |     fn bar(self: &mut Foo) {
   |                  ^^^^^^^^ lifetime mismatch
   |
   = note: expected struct `Foo<'a>`
              found struct `Foo<'_>`
note: the anonymous lifetime defined here...
  --> $DIR/issue-17740.rs:6:23
   |
LL |     fn bar(self: &mut Foo) {
   |                       ^^^
note: ...does not necessarily outlive the lifetime `'a` as defined here
  --> $DIR/issue-17740.rs:5:7
   |
LL | impl <'a> Foo<'a>{
   |       ^^

error[E0308]: mismatched `self` parameter type
  --> $DIR/issue-17740.rs:6:18
   |
LL |     fn bar(self: &mut Foo) {
   |                  ^^^^^^^^ lifetime mismatch
   |
   = note: expected struct `Foo<'a>`
              found struct `Foo<'_>`
note: the lifetime `'a` as defined here...
  --> $DIR/issue-17740.rs:5:7
   |
LL | impl <'a> Foo<'a>{
   |       ^^
note: ...does not necessarily outlive the anonymous lifetime defined here
  --> $DIR/issue-17740.rs:6:23
   |
LL |     fn bar(self: &mut Foo) {
   |                       ^^^

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0308`.
