Rollup merge of #87453 - ibraheemdev:i-68697, r=wesleywiser
Suggest removing unnecessary &mut as help message Closes #68697
This commit is contained in:
commit
954137ea0e
@ -242,7 +242,12 @@ pub(crate) fn report_mutability_error(
|
||||
.unwrap_or(false) =>
|
||||
{
|
||||
err.span_label(span, format!("cannot {ACT}", ACT = act));
|
||||
err.span_label(span, "try removing `&mut` here");
|
||||
err.span_suggestion(
|
||||
span,
|
||||
"try removing `&mut` here",
|
||||
String::new(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
|
||||
// We want to suggest users use `let mut` for local (user
|
||||
@ -324,7 +329,12 @@ pub(crate) fn report_mutability_error(
|
||||
} =>
|
||||
{
|
||||
err.span_label(span, format!("cannot {ACT}", ACT = act));
|
||||
err.span_label(span, "try removing `&mut` here");
|
||||
err.span_suggestion(
|
||||
span,
|
||||
"try removing `&mut` here",
|
||||
String::new(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
|
||||
PlaceRef { local, projection: [ProjectionElem::Deref] }
|
||||
|
@ -3,6 +3,7 @@ fn main() {
|
||||
match op {
|
||||
Some(ref v) => { let a = &mut v; },
|
||||
//~^ ERROR cannot borrow `v` as mutable, as it is not declared as mutable
|
||||
//~| HELP try removing `&mut` here
|
||||
None => {},
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ LL | Some(ref v) => { let a = &mut v; },
|
||||
| ^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -4,8 +4,10 @@
|
||||
pub fn f(b: &mut i32) {
|
||||
g(&mut b);
|
||||
//~^ ERROR cannot borrow
|
||||
//~| HELP try removing `&mut` here
|
||||
g(&mut &mut b);
|
||||
//~^ ERROR cannot borrow
|
||||
//~| HELP try removing `&mut` here
|
||||
}
|
||||
|
||||
pub fn g(_: &mut i32) {}
|
||||
|
@ -5,16 +5,16 @@ LL | g(&mut b);
|
||||
| ^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error[E0596]: cannot borrow `b` as mutable, as it is not declared as mutable
|
||||
--> $DIR/mut-borrow-of-mut-ref.rs:7:12
|
||||
--> $DIR/mut-borrow-of-mut-ref.rs:8:12
|
||||
|
|
||||
LL | g(&mut &mut b);
|
||||
| ^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -5,13 +5,16 @@
|
||||
impl Struct {
|
||||
fn foo(&mut self) {
|
||||
(&mut self).bar(); //~ ERROR cannot borrow
|
||||
//~^ HELP try removing `&mut` here
|
||||
}
|
||||
|
||||
// In this case we could keep the suggestion, but to distinguish the
|
||||
// two cases is pretty hard. It's an obscure case anyway.
|
||||
fn bar(self: &mut Self) {
|
||||
//~^ WARN function cannot return without recursing
|
||||
//~^^ HELP a `loop` may express intention better if this is on purpose
|
||||
(&mut self).bar(); //~ ERROR cannot borrow
|
||||
//~^ HELP try removing `&mut` here
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,14 +5,14 @@ LL | (&mut self).bar();
|
||||
| ^^^^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
warning: function cannot return without recursing
|
||||
--> $DIR/issue-31424.rs:12:5
|
||||
--> $DIR/issue-31424.rs:13:5
|
||||
|
|
||||
LL | fn bar(self: &mut Self) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
|
||||
LL |
|
||||
...
|
||||
LL | (&mut self).bar();
|
||||
| ----------------- recursive call site
|
||||
|
|
||||
@ -20,13 +20,13 @@ LL | (&mut self).bar();
|
||||
= 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-31424.rs:14:9
|
||||
--> $DIR/issue-31424.rs:16:9
|
||||
|
|
||||
LL | (&mut self).bar();
|
||||
| ^^^^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to 2 previous errors; 1 warning emitted
|
||||
|
||||
|
@ -5,6 +5,7 @@ fn run(&self, z: &mut Z) { }
|
||||
fn start(&mut self) {
|
||||
self.run(&mut self); //~ ERROR cannot borrow
|
||||
//~| ERROR cannot borrow
|
||||
//~| HELP try removing `&mut` here
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | self.run(&mut self);
|
||||
| ^^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error[E0502]: cannot borrow `self` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/issue-34126.rs:6:18
|
||||
|
@ -4,4 +4,5 @@ fn main() {
|
||||
let mut v: Vec<String> = Vec::new();
|
||||
let ref mut key = v[0];
|
||||
get(&mut key); //~ ERROR cannot borrow
|
||||
//~| HELP try removing `&mut` here
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ LL | get(&mut key);
|
||||
| ^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -10,6 +10,7 @@ fn main() {
|
||||
match x {
|
||||
TestEnum::Item(ref mut x) => {
|
||||
test(&mut x); //~ ERROR cannot borrow `x` as mutable, as it is not declared as mutable
|
||||
//~| HELP try removing `&mut` here
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ LL | test(&mut x);
|
||||
| ^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -3,11 +3,13 @@
|
||||
impl Struct {
|
||||
fn bar(self: &mut Self) {
|
||||
//~^ WARN function cannot return without recursing
|
||||
//~^^ HELP a `loop` may express intention better if this is on purpose
|
||||
(&mut self).bar();
|
||||
//~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596]
|
||||
//~^^ HELP try removing `&mut` here
|
||||
}
|
||||
|
||||
fn imm(self) {
|
||||
fn imm(self) { //~ HELP consider changing this to be mutable
|
||||
(&mut self).bar();
|
||||
//~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596]
|
||||
}
|
||||
@ -25,7 +27,8 @@ fn immref(&self) {
|
||||
fn mtblref(&mut self) {
|
||||
(&mut self).bar();
|
||||
//~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596]
|
||||
//~^^ HELP try removing `&mut` here
|
||||
}
|
||||
}
|
||||
|
||||
fn main () {}
|
||||
fn main() {}
|
||||
|
@ -3,7 +3,7 @@ warning: function cannot return without recursing
|
||||
|
|
||||
LL | fn bar(self: &mut Self) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
|
||||
LL |
|
||||
...
|
||||
LL | (&mut self).bar();
|
||||
| ----------------- recursive call site
|
||||
|
|
||||
@ -11,16 +11,16 @@ LL | (&mut self).bar();
|
||||
= 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:6:9
|
||||
--> $DIR/issue-51191.rs:7:9
|
||||
|
|
||||
LL | (&mut self).bar();
|
||||
| ^^^^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
|
||||
--> $DIR/issue-51191.rs:11:9
|
||||
--> $DIR/issue-51191.rs:13:9
|
||||
|
|
||||
LL | fn imm(self) {
|
||||
| ---- help: consider changing this to be mutable: `mut self`
|
||||
@ -28,25 +28,25 @@ 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:20:9
|
||||
--> $DIR/issue-51191.rs:22:9
|
||||
|
|
||||
LL | (&mut self).bar();
|
||||
| ^^^^^^^^^^^ cannot borrow as mutable
|
||||
|
||||
error[E0596]: cannot borrow data in a `&` reference as mutable
|
||||
--> $DIR/issue-51191.rs:20:9
|
||||
--> $DIR/issue-51191.rs:22: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:26:9
|
||||
--> $DIR/issue-51191.rs:28:9
|
||||
|
|
||||
LL | (&mut self).bar();
|
||||
| ^^^^^^^^^^^
|
||||
| |
|
||||
| cannot borrow as mutable
|
||||
| try removing `&mut` here
|
||||
| help: try removing `&mut` here
|
||||
|
||||
error: aborting due to 5 previous errors; 1 warning emitted
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user