error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable --> $DIR/issue-31424.rs:7:9 | LL | (&mut self).bar(); | ^^^^^^^^^^^ cannot borrow as mutable | note: the binding is already a mutable borrow --> $DIR/issue-31424.rs:6:12 | LL | fn foo(&mut self) { | ^^^^^^^^^ help: try removing `&mut` here --> $DIR/issue-31424.rs:7:9 | LL | (&mut self).bar(); | ^^^^^^^^^^^ warning: function cannot return without recursing --> $DIR/issue-31424.rs:13:5 | LL | fn bar(self: &mut Self) { | ^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing ... LL | (&mut self).bar(); | ----------------- recursive call site | = help: a `loop` may express intention better if this is on purpose = note: `#[warn(unconditional_recursion)]` on by default error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable --> $DIR/issue-31424.rs:16:9 | LL | (&mut self).bar(); | ^^^^^^^^^^^ cannot borrow as mutable | note: the binding is already a mutable borrow --> $DIR/issue-31424.rs:13:18 | LL | fn bar(self: &mut Self) { | ^^^^^^^^^ help: try removing `&mut` here --> $DIR/issue-31424.rs:16:9 | LL | (&mut self).bar(); | ^^^^^^^^^^^ error: aborting due to 2 previous errors; 1 warning emitted For more information about this error, try `rustc --explain E0596`.