warning: function cannot return without recursing
  --> $DIR/issue-51191.rs:16:5
   |
LL |     fn bar(self: &mut Self) {
   |     ^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
LL |         //~^ WARN function cannot return without recursing
LL |         (&mut self).bar();
   |         ----------------- recursive call site
   |
   = note: #[warn(unconditional_recursion)] on by default
   = help: a `loop` may express intention better if this is on purpose

error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
  --> $DIR/issue-51191.rs:18:9
   |
LL |         (&mut self).bar();
   |         ^^^^^^^^^^^
   |         |
   |         cannot borrow as mutable
   |         try removing `&mut` here

error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
  --> $DIR/issue-51191.rs:23:9
   |
LL |     fn imm(self) {
   |            ---- help: consider changing this to be mutable: `mut self`
LL |         (&mut self).bar();
   |         ^^^^^^^^^^^ cannot borrow as mutable

error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
  --> $DIR/issue-51191.rs:32:9
   |
LL |         (&mut self).bar();
   |         ^^^^^^^^^^^ cannot borrow as mutable

error[E0596]: cannot borrow data in a `&` reference as mutable
  --> $DIR/issue-51191.rs:32:9
   |
LL |         (&mut self).bar();
   |         ^^^^^^^^^^^ cannot borrow as mutable

error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
  --> $DIR/issue-51191.rs:38:9
   |
LL |         (&mut self).bar();
   |         ^^^^^^^^^^^
   |         |
   |         cannot borrow as mutable
   |         try removing `&mut` here

error: aborting due to 5 previous errors

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