Verbose suggestions

This commit is contained in:
Esteban Küber 2023-01-01 00:06:31 -08:00
parent 5bfcfeee2a
commit 545406528a
53 changed files with 363 additions and 188 deletions

View file

@ -377,10 +377,10 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
err.span_label(span, format!("cannot {act}")); err.span_label(span, format!("cannot {act}"));
} }
if suggest { if suggest {
err.span_suggestion( err.span_suggestion_verbose(
local_decl.source_info.span, local_decl.source_info.span.shrink_to_lo(),
"consider changing this to be mutable", "consider changing this to be mutable",
format!("mut {}", self.local_names[local].unwrap()), "mut ".to_string(),
Applicability::MachineApplicable, Applicability::MachineApplicable,
); );
let tcx = self.infcx.tcx; let tcx = self.infcx.tcx;

View file

@ -25,12 +25,10 @@ fn main() {
// Outputs require mutable places // Outputs require mutable places
let v: Vec<u64> = vec![0, 1, 2]; let v: Vec<u64> = vec![0, 1, 2]; //~ ERROR cannot borrow `v` as mutable
asm!("{}", in(reg) v[0]); asm!("{}", in(reg) v[0]);
asm!("{}", out(reg) v[0]); asm!("{}", out(reg) v[0]);
//~^ ERROR cannot borrow `v` as mutable, as it is not declared as mutable
asm!("{}", inout(reg) v[0]); asm!("{}", inout(reg) v[0]);
//~^ ERROR cannot borrow `v` as mutable, as it is not declared as mutable
// Sym operands must point to a function or static // Sym operands must point to a function or static
} }

View file

@ -25,24 +25,22 @@ LL | let mut y: u64 = 0;
| +++ | +++
error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/type-check-2-2.rs:30:29 --> $DIR/type-check-2-2.rs:28:13
| |
LL | let v: Vec<u64> = vec![0, 1, 2]; LL | let v: Vec<u64> = vec![0, 1, 2];
| - help: consider changing this to be mutable: `mut v` | ^ not mutable
LL | asm!("{}", in(reg) v[0]); LL | asm!("{}", in(reg) v[0]);
LL | asm!("{}", out(reg) v[0]); LL | asm!("{}", out(reg) v[0]);
| ^ cannot borrow as mutable | - cannot borrow as mutable
error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/type-check-2-2.rs:32:31
|
LL | let v: Vec<u64> = vec![0, 1, 2];
| - help: consider changing this to be mutable: `mut v`
...
LL | asm!("{}", inout(reg) v[0]); LL | asm!("{}", inout(reg) v[0]);
| ^ cannot borrow as mutable | - cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut v: Vec<u64> = vec![0, 1, 2];
| +++
error: aborting due to 4 previous errors error: aborting due to 3 previous errors
Some errors have detailed explanations: E0381, E0596. Some errors have detailed explanations: E0381, E0596.
For more information about an error, try `rustc --explain E0381`. For more information about an error, try `rustc --explain E0381`.

View file

@ -28,15 +28,17 @@ error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/type-check-5.rs:24:13 --> $DIR/type-check-5.rs:24:13
| |
LL | let v: Vec<u64> = vec![0, 1, 2]; LL | let v: Vec<u64> = vec![0, 1, 2];
| ^ | ^ not mutable
| |
| not mutable
| help: consider changing this to be mutable: `mut v`
... ...
LL | asm!("{}", out(reg) v[0]); LL | asm!("{}", out(reg) v[0]);
| - cannot borrow as mutable | - cannot borrow as mutable
LL | asm!("{}", inout(reg) v[0]); LL | asm!("{}", inout(reg) v[0]);
| - cannot borrow as mutable | - cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut v: Vec<u64> = vec![0, 1, 2];
| +++
error: aborting due to 3 previous errors error: aborting due to 3 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/issue-61452.rs:4:5 --> $DIR/issue-61452.rs:4:5
| |
LL | pub async fn f(x: Option<usize>) {
| - help: consider changing this to be mutable: `mut x`
LL | x.take(); LL | x.take();
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | pub async fn f(mut x: Option<usize>) {
| +++
error[E0384]: cannot assign twice to immutable variable `x` error[E0384]: cannot assign twice to immutable variable `x`
--> $DIR/issue-61452.rs:9:5 --> $DIR/issue-61452.rs:9:5

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `data` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `data` as mutable, as it is not declared as mutable
--> $DIR/issue-61187.rs:6:5 --> $DIR/issue-61187.rs:6:5
| |
LL | async fn response(data: Vec<u8>) {
| ---- help: consider changing this to be mutable: `mut data`
LL | data.reverse(); LL | data.reverse();
| ^^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | async fn response(mut data: Vec<u8>) {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -19,7 +19,7 @@ fn main() {
let y = Int(2); let y = Int(2);
//~^ HELP consider changing this to be mutable //~^ HELP consider changing this to be mutable
//~| SUGGESTION mut y //~| SUGGESTION mut
y //~ ERROR cannot borrow `y` as mutable, as it is not declared as mutable y //~ ERROR cannot borrow `y` as mutable, as it is not declared as mutable
//~| cannot borrow as mutable //~| cannot borrow as mutable
+= +=

View file

@ -10,11 +10,13 @@ LL | x;
error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
--> $DIR/augmented-assignments.rs:23:5 --> $DIR/augmented-assignments.rs:23:5
| |
LL | let y = Int(2);
| - help: consider changing this to be mutable: `mut y`
...
LL | y LL | y
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut y = Int(2);
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrow-raw-address-of-mutability.rs:5:13 --> $DIR/borrow-raw-address-of-mutability.rs:5:13
| |
LL | let x = 0;
| - help: consider changing this to be mutable: `mut x`
LL | let y = &raw mut x; LL | let y = &raw mut x;
| ^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = 0;
| +++
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrow-raw-address-of-mutability.rs:11:17 --> $DIR/borrow-raw-address-of-mutability.rs:11:17
@ -18,13 +21,16 @@ LL | let y = &raw mut x;
error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
--> $DIR/borrow-raw-address-of-mutability.rs:21:5 --> $DIR/borrow-raw-address-of-mutability.rs:21:5
| |
LL | let f = || {
| - help: consider changing this to be mutable: `mut f`
LL | let y = &raw mut x; LL | let y = &raw mut x;
| - calling `f` requires mutable binding due to mutable borrow of `x` | - calling `f` requires mutable binding due to mutable borrow of `x`
LL | }; LL | };
LL | f(); LL | f();
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut f = || {
| +++
error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
--> $DIR/borrow-raw-address-of-mutability.rs:29:17 --> $DIR/borrow-raw-address-of-mutability.rs:29:17

View file

@ -1,11 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-access-permissions.rs:9:19 --> $DIR/borrowck-access-permissions.rs:9:19
| |
LL | let x = 1;
| - help: consider changing this to be mutable: `mut x`
...
LL | let _y1 = &mut x; LL | let _y1 = &mut x;
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = 1;
| +++
error[E0596]: cannot borrow immutable static item `static_x` as mutable error[E0596]: cannot borrow immutable static item `static_x` as mutable
--> $DIR/borrowck-access-permissions.rs:14:19 --> $DIR/borrowck-access-permissions.rs:14:19
@ -16,11 +18,13 @@ LL | let _y1 = &mut static_x;
error[E0596]: cannot borrow `*box_x` as mutable, as `box_x` is not declared as mutable error[E0596]: cannot borrow `*box_x` as mutable, as `box_x` is not declared as mutable
--> $DIR/borrowck-access-permissions.rs:22:19 --> $DIR/borrowck-access-permissions.rs:22:19
| |
LL | let box_x = Box::new(1);
| ----- help: consider changing this to be mutable: `mut box_x`
...
LL | let _y1 = &mut *box_x; LL | let _y1 = &mut *box_x;
| ^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut box_x = Box::new(1);
| +++
error[E0596]: cannot borrow `*ref_x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*ref_x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-access-permissions.rs:30:19 --> $DIR/borrowck-access-permissions.rs:30:19

View file

@ -1,34 +1,46 @@
error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
--> $DIR/borrowck-argument.rs:10:5 --> $DIR/borrowck-argument.rs:10:5
| |
LL | fn func(arg: S) {
| --- help: consider changing this to be mutable: `mut arg`
LL | arg.mutate(); LL | arg.mutate();
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn func(mut arg: S) {
| +++
error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
--> $DIR/borrowck-argument.rs:15:9 --> $DIR/borrowck-argument.rs:15:9
| |
LL | fn method(&self, arg: S) {
| --- help: consider changing this to be mutable: `mut arg`
LL | arg.mutate(); LL | arg.mutate();
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn method(&self, mut arg: S) {
| +++
error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
--> $DIR/borrowck-argument.rs:21:9 --> $DIR/borrowck-argument.rs:21:9
| |
LL | fn default(&self, arg: S) {
| --- help: consider changing this to be mutable: `mut arg`
LL | arg.mutate(); LL | arg.mutate();
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn default(&self, mut arg: S) {
| +++
error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
--> $DIR/borrowck-argument.rs:32:17 --> $DIR/borrowck-argument.rs:32:17
| |
LL | (|arg: S| { arg.mutate() })(s); LL | (|arg: S| { arg.mutate() })(s);
| --- ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
| | |
| help: consider changing this to be mutable: `mut arg` help: consider changing this to be mutable
|
LL | (|mut arg: S| { arg.mutate() })(s);
| +++
error: aborting due to 4 previous errors error: aborting due to 4 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-auto-mut-ref-to-immut-var.rs:15:5 --> $DIR/borrowck-auto-mut-ref-to-immut-var.rs:15:5
| |
LL | let x = Foo { x: 3 };
| - help: consider changing this to be mutable: `mut x`
LL | x.printme(); LL | x.printme();
| ^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = Foo { x: 3 };
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -105,10 +105,13 @@ LL | *bar1;
error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable
--> $DIR/borrowck-borrow-from-owned-ptr.rs:122:16 --> $DIR/borrowck-borrow-from-owned-ptr.rs:122:16
| |
LL | let foo = make_foo();
| --- help: consider changing this to be mutable: `mut foo`
LL | let bar1 = &mut foo.bar1; LL | let bar1 = &mut foo.bar1;
| ^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut foo = make_foo();
| +++
error: aborting due to 11 previous errors error: aborting due to 11 previous errors

View file

@ -105,10 +105,13 @@ LL | *bar1;
error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable
--> $DIR/borrowck-borrow-from-stack-variable.rs:120:16 --> $DIR/borrowck-borrow-from-stack-variable.rs:120:16
| |
LL | let foo = make_foo();
| --- help: consider changing this to be mutable: `mut foo`
LL | let bar1 = &mut foo.bar1; LL | let bar1 = &mut foo.bar1;
| ^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut foo = make_foo();
| +++
error: aborting due to 11 previous errors error: aborting due to 11 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `*a` as mutable, as `a` is not declared as mutable error[E0596]: cannot borrow `*a` as mutable, as `a` is not declared as mutable
--> $DIR/borrowck-borrow-immut-deref-of-box-as-mut.rs:12:5 --> $DIR/borrowck-borrow-immut-deref-of-box-as-mut.rs:12:5
| |
LL | let a: Box<_> = Box::new(A);
| - help: consider changing this to be mutable: `mut a`
LL | a.foo(); LL | a.foo();
| ^^^^^^^ cannot borrow as mutable | ^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut a: Box<_> = Box::new(A);
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-mut-addr-of-imm-var.rs:3:25 --> $DIR/borrowck-mut-addr-of-imm-var.rs:3:25
| |
LL | let x: isize = 3;
| - help: consider changing this to be mutable: `mut x`
LL | let y: &mut isize = &mut x; LL | let y: &mut isize = &mut x;
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x: isize = 3;
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/borrowck-mut-slice-of-imm-vec.rs:7:11 --> $DIR/borrowck-mut-slice-of-imm-vec.rs:7:11
| |
LL | let v = vec![1, 2, 3];
| - help: consider changing this to be mutable: `mut v`
LL | write(&mut v); LL | write(&mut v);
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut v = vec![1, 2, 3];
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -11,11 +11,13 @@ LL | use_mut(sp);
error[E0596]: cannot borrow `s` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `s` as mutable, as it is not declared as mutable
--> $DIR/borrowck-overloaded-call.rs:67:5 --> $DIR/borrowck-overloaded-call.rs:67:5
| |
LL | let s = SFnMut {
| - help: consider changing this to be mutable: `mut s`
...
LL | s(3); LL | s(3);
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut s = SFnMut {
| +++
error[E0382]: use of moved value: `s` error[E0382]: use of moved value: `s`
--> $DIR/borrowck-overloaded-call.rs:75:5 --> $DIR/borrowck-overloaded-call.rs:75:5

View file

@ -1,11 +1,13 @@
error[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable error[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable
--> $DIR/borrowck-ref-mut-of-imm.rs:4:12 --> $DIR/borrowck-ref-mut-of-imm.rs:4:12
| |
LL | fn destructure(x: Option<isize>) -> isize {
| - help: consider changing this to be mutable: `mut x`
...
LL | Some(ref mut v) => *v LL | Some(ref mut v) => *v
| ^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn destructure(mut x: Option<isize>) -> isize {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -11,10 +11,13 @@ LL | use_mut(g);
error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
--> $DIR/borrowck-unboxed-closures.rs:7:5 --> $DIR/borrowck-unboxed-closures.rs:7:5
| |
LL | fn b<F:FnMut(isize, isize) -> isize>(f: F) {
| - help: consider changing this to be mutable: `mut f`
LL | f(1, 2); LL | f(1, 2);
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn b<F:FnMut(isize, isize) -> isize>(mut f: F) {
| +++
error[E0382]: use of moved value: `f` error[E0382]: use of moved value: `f`
--> $DIR/borrowck-unboxed-closures.rs:12:5 --> $DIR/borrowck-unboxed-closures.rs:12:5

View file

@ -1,18 +1,24 @@
error[E0594]: cannot assign to `*y`, as `y` is not declared as mutable error[E0594]: cannot assign to `*y`, as `y` is not declared as mutable
--> $DIR/immut-function-arguments.rs:2:5 --> $DIR/immut-function-arguments.rs:2:5
| |
LL | fn f(y: Box<isize>) {
| - help: consider changing this to be mutable: `mut y`
LL | *y = 5; LL | *y = 5;
| ^^^^^^ cannot assign | ^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | fn f(mut y: Box<isize>) {
| +++
error[E0594]: cannot assign to `*q`, as `q` is not declared as mutable error[E0594]: cannot assign to `*q`, as `q` is not declared as mutable
--> $DIR/immut-function-arguments.rs:6:35 --> $DIR/immut-function-arguments.rs:6:35
| |
LL | let _frob = |q: Box<isize>| { *q = 2; }; LL | let _frob = |q: Box<isize>| { *q = 2; };
| - ^^^^^^ cannot assign | ^^^^^^ cannot assign
| | |
| help: consider changing this to be mutable: `mut q` help: consider changing this to be mutable
|
LL | let _frob = |mut q: Box<isize>| { *q = 2; };
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,11 +1,13 @@
error[E0594]: cannot assign to `t.0`, as `t` is not declared as mutable error[E0594]: cannot assign to `t.0`, as `t` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:13:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:13:9
| |
LL | let t: Tuple = (S(0), 0);
| - help: consider changing this to be mutable: `mut t`
LL | drop(t);
LL | t.0 = S(1); LL | t.0 = S(1);
| ^^^^^^^^^^ cannot assign | ^^^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut t: Tuple = (S(0), 0);
| +++
error[E0382]: assign to part of moved value: `t` error[E0382]: assign to part of moved value: `t`
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:13:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:13:9
@ -20,20 +22,24 @@ LL | t.0 = S(1);
error[E0594]: cannot assign to `t.1`, as `t` is not declared as mutable error[E0594]: cannot assign to `t.1`, as `t` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:16:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:16:9
| |
LL | let t: Tuple = (S(0), 0);
| - help: consider changing this to be mutable: `mut t`
...
LL | t.1 = 2; LL | t.1 = 2;
| ^^^^^^^ cannot assign | ^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut t: Tuple = (S(0), 0);
| +++
error[E0594]: cannot assign to `u.0`, as `u` is not declared as mutable error[E0594]: cannot assign to `u.0`, as `u` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:24:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:24:9
| |
LL | let u: Tpair = Tpair(S(0), 0);
| - help: consider changing this to be mutable: `mut u`
LL | drop(u);
LL | u.0 = S(1); LL | u.0 = S(1);
| ^^^^^^^^^^ cannot assign | ^^^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut u: Tpair = Tpair(S(0), 0);
| +++
error[E0382]: assign to part of moved value: `u` error[E0382]: assign to part of moved value: `u`
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:24:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:24:9
@ -48,20 +54,24 @@ LL | u.0 = S(1);
error[E0594]: cannot assign to `u.1`, as `u` is not declared as mutable error[E0594]: cannot assign to `u.1`, as `u` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:27:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:27:9
| |
LL | let u: Tpair = Tpair(S(0), 0);
| - help: consider changing this to be mutable: `mut u`
...
LL | u.1 = 2; LL | u.1 = 2;
| ^^^^^^^ cannot assign | ^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut u: Tpair = Tpair(S(0), 0);
| +++
error[E0594]: cannot assign to `v.x`, as `v` is not declared as mutable error[E0594]: cannot assign to `v.x`, as `v` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:35:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:35:9
| |
LL | let v: Spair = Spair { x: S(0), y: 0 };
| - help: consider changing this to be mutable: `mut v`
LL | drop(v);
LL | v.x = S(1); LL | v.x = S(1);
| ^^^^^^^^^^ cannot assign | ^^^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut v: Spair = Spair { x: S(0), y: 0 };
| +++
error[E0382]: assign to part of moved value: `v` error[E0382]: assign to part of moved value: `v`
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:35:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:35:9
@ -76,11 +86,13 @@ LL | v.x = S(1);
error[E0594]: cannot assign to `v.y`, as `v` is not declared as mutable error[E0594]: cannot assign to `v.y`, as `v` is not declared as mutable
--> $DIR/issue-54499-field-mutation-of-moved-out.rs:38:9 --> $DIR/issue-54499-field-mutation-of-moved-out.rs:38:9
| |
LL | let v: Spair = Spair { x: S(0), y: 0 };
| - help: consider changing this to be mutable: `mut v`
...
LL | v.y = 2; LL | v.y = 2;
| ^^^^^^^ cannot assign | ^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut v: Spair = Spair { x: S(0), y: 0 };
| +++
error: aborting due to 9 previous errors error: aborting due to 9 previous errors

View file

@ -2,10 +2,7 @@ error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/many-mutable-borrows.rs:2:9 --> $DIR/many-mutable-borrows.rs:2:9
| |
LL | let v = Vec::new(); LL | let v = Vec::new();
| ^ | ^ not mutable
| |
| not mutable
| help: consider changing this to be mutable: `mut v`
LL | v.push(0); LL | v.push(0);
| --------- cannot borrow as mutable | --------- cannot borrow as mutable
LL | v.push(0); LL | v.push(0);
@ -26,6 +23,10 @@ LL | v.push(0);
| --------- cannot borrow as mutable | --------- cannot borrow as mutable
| |
= note: ...and 5 other attempted mutable borrows = note: ...and 5 other attempted mutable borrows
help: consider changing this to be mutable
|
LL | let mut v = Vec::new();
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -248,14 +248,16 @@ error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/mutability-errors.rs:53:14 --> $DIR/mutability-errors.rs:53:14
| |
LL | fn imm_local(x: (i32,)) { LL | fn imm_local(x: (i32,)) {
| ^ | ^ not mutable
| |
| not mutable
| help: consider changing this to be mutable: `mut x`
LL | &mut x; LL | &mut x;
| ------ cannot borrow as mutable | ------ cannot borrow as mutable
LL | &mut x.0; LL | &mut x.0;
| -------- cannot borrow as mutable | -------- cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn imm_local(mut x: (i32,)) {
| +++
error[E0594]: cannot assign to `x`, as it is not declared as mutable error[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/mutability-errors.rs:60:9 --> $DIR/mutability-errors.rs:60:9

View file

@ -11,11 +11,13 @@ LL | x.a = 1;
error[E0594]: cannot assign to `x.b`, as `x` is not declared as mutable error[E0594]: cannot assign to `x.b`, as `x` is not declared as mutable
--> $DIR/reassignment_immutable_fields_overlapping.rs:13:5 --> $DIR/reassignment_immutable_fields_overlapping.rs:13:5
| |
LL | let x: Foo;
| - help: consider changing this to be mutable: `mut x`
LL | x.a = 1;
LL | x.b = 22; LL | x.b = 22;
| ^^^^^^^^ cannot assign | ^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut x: Foo;
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,11 +1,13 @@
error[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable error[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable
--> $DIR/reassignment_immutable_fields_twice.rs:7:5 --> $DIR/reassignment_immutable_fields_twice.rs:7:5
| |
LL | let x: (u32, u32);
| - help: consider changing this to be mutable: `mut x`
LL | x = (22, 44);
LL | x.0 = 1; LL | x.0 = 1;
| ^^^^^^^ cannot assign | ^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut x: (u32, u32);
| +++
error[E0381]: partially assigned binding `x` isn't fully initialized error[E0381]: partially assigned binding `x` isn't fully initialized
--> $DIR/reassignment_immutable_fields_twice.rs:12:5 --> $DIR/reassignment_immutable_fields_twice.rs:12:5

View file

@ -1,13 +1,16 @@
error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable
--> $DIR/issue-80313-mutable-borrow-in-closure.rs:6:5 --> $DIR/issue-80313-mutable-borrow-in-closure.rs:6:5
| |
LL | let callback = || {
| -------- help: consider changing this to be mutable: `mut callback`
LL | &mut my_var; LL | &mut my_var;
| ------ calling `callback` requires mutable binding due to mutable borrow of `my_var` | ------ calling `callback` requires mutable binding due to mutable borrow of `my_var`
LL | }; LL | };
LL | callback(); LL | callback();
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut callback = || {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,13 +1,16 @@
error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable
--> $DIR/issue-80313-mutable-borrow-in-move-closure.rs:6:5 --> $DIR/issue-80313-mutable-borrow-in-move-closure.rs:6:5
| |
LL | let callback = move || {
| -------- help: consider changing this to be mutable: `mut callback`
LL | &mut my_var; LL | &mut my_var;
| ------ calling `callback` requires mutable binding due to possible mutation of `my_var` | ------ calling `callback` requires mutable binding due to possible mutation of `my_var`
LL | }; LL | };
LL | callback(); LL | callback();
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut callback = move || {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,13 +1,16 @@
error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable
--> $DIR/issue-80313-mutation-in-closure.rs:6:5 --> $DIR/issue-80313-mutation-in-closure.rs:6:5
| |
LL | let callback = || {
| -------- help: consider changing this to be mutable: `mut callback`
LL | my_var = true; LL | my_var = true;
| ------ calling `callback` requires mutable binding due to mutable borrow of `my_var` | ------ calling `callback` requires mutable binding due to mutable borrow of `my_var`
LL | }; LL | };
LL | callback(); LL | callback();
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut callback = || {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,13 +1,16 @@
error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `callback` as mutable, as it is not declared as mutable
--> $DIR/issue-80313-mutation-in-move-closure.rs:6:5 --> $DIR/issue-80313-mutation-in-move-closure.rs:6:5
| |
LL | let callback = move || {
| -------- help: consider changing this to be mutable: `mut callback`
LL | my_var = true; LL | my_var = true;
| ------ calling `callback` requires mutable binding due to possible mutation of `my_var` | ------ calling `callback` requires mutable binding due to possible mutation of `my_var`
LL | }; LL | };
LL | callback(); LL | callback();
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut callback = move || {
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -2,11 +2,14 @@ error[E0596]: cannot borrow `bar` as mutable, as it is not declared as mutable
--> $DIR/issue-81700-mut-borrow.rs:3:5 --> $DIR/issue-81700-mut-borrow.rs:3:5
| |
LL | let bar = || { foo(x); }; LL | let bar = || { foo(x); };
| --- - calling `bar` requires mutable binding due to mutable borrow of `x` | - calling `bar` requires mutable binding due to mutable borrow of `x`
| |
| help: consider changing this to be mutable: `mut bar`
LL | bar(); LL | bar();
| ^^^ cannot borrow as mutable | ^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut bar = || { foo(x); };
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,11 +1,13 @@
error[E0596]: cannot borrow `c` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `c` as mutable, as it is not declared as mutable
--> $DIR/issue-82438-mut-without-upvar.rs:27:27 --> $DIR/issue-82438-mut-without-upvar.rs:27:27
| |
LL | let c = |a, b, c, d| {};
| - help: consider changing this to be mutable: `mut c`
LL |
LL | A.f(participant_name, &mut c); LL | A.f(participant_name, &mut c);
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut c = |a, b, c, d| {};
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
--> $DIR/issue-84044-drop-non-mut.rs:5:10 --> $DIR/issue-84044-drop-non-mut.rs:5:10
| |
LL | let f = || {};
| - help: consider changing this to be mutable: `mut f`
LL | drop(&mut f); LL | drop(&mut f);
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut f = || {};
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,11 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/huge_multispan_highlight.rs:90:13 --> $DIR/huge_multispan_highlight.rs:90:13
| |
LL | let x = "foo";
| - help: consider changing this to be mutable: `mut x`
...
LL | let y = &mut x; LL | let y = &mut x;
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = "foo";
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,26 +1,35 @@
error[E0596]: cannot borrow `f.v` as mutable, as `f` is not declared as mutable error[E0596]: cannot borrow `f.v` as mutable, as `f` is not declared as mutable
--> $DIR/issue-35937.rs:7:5 --> $DIR/issue-35937.rs:7:5
| |
LL | let f = Foo { v: Vec::new() };
| - help: consider changing this to be mutable: `mut f`
LL | f.v.push("cat".to_string()); LL | f.v.push("cat".to_string());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut f = Foo { v: Vec::new() };
| +++
error[E0594]: cannot assign to `s.x`, as `s` is not declared as mutable error[E0594]: cannot assign to `s.x`, as `s` is not declared as mutable
--> $DIR/issue-35937.rs:16:5 --> $DIR/issue-35937.rs:16:5
| |
LL | let s = S { x: 42 };
| - help: consider changing this to be mutable: `mut s`
LL | s.x += 1; LL | s.x += 1;
| ^^^^^^^^ cannot assign | ^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut s = S { x: 42 };
| +++
error[E0594]: cannot assign to `s.x`, as `s` is not declared as mutable error[E0594]: cannot assign to `s.x`, as `s` is not declared as mutable
--> $DIR/issue-35937.rs:20:5 --> $DIR/issue-35937.rs:20:5
| |
LL | fn bar(s: S) {
| - help: consider changing this to be mutable: `mut s`
LL | s.x += 1; LL | s.x += 1;
| ^^^^^^^^ cannot assign | ^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | fn bar(mut s: S) {
| +++
error: aborting due to 3 previous errors error: aborting due to 3 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `z.x` as mutable, as `z` is not declared as mutable error[E0596]: cannot borrow `z.x` as mutable, as `z` is not declared as mutable
--> $DIR/issue-39544.rs:11:13 --> $DIR/issue-39544.rs:11:13
| |
LL | let z = Z { x: X::Y };
| - help: consider changing this to be mutable: `mut z`
LL | let _ = &mut z.x; LL | let _ = &mut z.x;
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut z = Z { x: X::Y };
| +++
error[E0596]: cannot borrow `self.x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `self.x` as mutable, as it is behind a `&` reference
--> $DIR/issue-39544.rs:16:17 --> $DIR/issue-39544.rs:16:17
@ -97,10 +100,13 @@ LL | fn foo4(other: &mut Z) {
error[E0596]: cannot borrow `z.x` as mutable, as `z` is not declared as mutable error[E0596]: cannot borrow `z.x` as mutable, as `z` is not declared as mutable
--> $DIR/issue-39544.rs:41:13 --> $DIR/issue-39544.rs:41:13
| |
LL | pub fn with_arg(z: Z, w: &Z) {
| - help: consider changing this to be mutable: `mut z`
LL | let _ = &mut z.x; LL | let _ = &mut z.x;
| ^^^^^^^^ cannot borrow as mutable | ^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | pub fn with_arg(mut z: Z, w: &Z) {
| +++
error[E0596]: cannot borrow `w.x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `w.x` as mutable, as it is behind a `&` reference
--> $DIR/issue-39544.rs:42:13 --> $DIR/issue-39544.rs:42:13

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/E0596.rs:3:13 --> $DIR/E0596.rs:3:13
| |
LL | let x = 1;
| - help: consider changing this to be mutable: `mut x`
LL | let y = &mut x; LL | let y = &mut x;
| ^^^^^^ cannot borrow as mutable | ^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = 1;
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `*x` as mutable, as `x` is not declared as mutable error[E0596]: cannot borrow `*x` as mutable, as `x` is not declared as mutable
--> $DIR/issue-36400.rs:5:7 --> $DIR/issue-36400.rs:5:7
| |
LL | let x = Box::new(3);
| - help: consider changing this to be mutable: `mut x`
LL | f(&mut *x); LL | f(&mut *x);
| ^^^^^^^ cannot borrow as mutable | ^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut x = Box::new(3);
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -16,10 +16,13 @@ LL | fn foo<'a>(x:fn(&u8, &u8), y: Vec<&'a u8>, z: &'a u8) {
error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
--> $DIR/ex3-both-anon-regions-using-fn-items.rs:2:3 --> $DIR/ex3-both-anon-regions-using-fn-items.rs:2:3
| |
LL | fn foo(x:fn(&u8, &u8), y: Vec<&u8>, z: &u8) {
| - help: consider changing this to be mutable: `mut y`
LL | y.push(z); LL | y.push(z);
| ^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn foo(x:fn(&u8, &u8), mut y: Vec<&u8>, z: &u8) {
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -16,10 +16,13 @@ LL | fn foo<'a>(x:Box<dyn Fn(&u8, &u8)> , y: Vec<&'a u8>, z: &'a u8) {
error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
--> $DIR/ex3-both-anon-regions-using-trait-objects.rs:2:3 --> $DIR/ex3-both-anon-regions-using-trait-objects.rs:2:3
| |
LL | fn foo(x:Box<dyn Fn(&u8, &u8)> , y: Vec<&u8>, z: &u8) {
| - help: consider changing this to be mutable: `mut y`
LL | y.push(z); LL | y.push(z);
| ^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn foo(x:Box<dyn Fn(&u8, &u8)> , mut y: Vec<&u8>, z: &u8) {
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,8 +1,6 @@
error[E0596]: cannot borrow `foo` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `foo` as mutable, as it is not declared as mutable
--> $DIR/span-covering-argument-1.rs:5:14 --> $DIR/span-covering-argument-1.rs:5:14
| |
LL | let $s = 0;
| -- help: consider changing this to be mutable: `mut foo`
LL | *&mut $s = 0; LL | *&mut $s = 0;
| ^^^^^^^ cannot borrow as mutable | ^^^^^^^ cannot borrow as mutable
... ...
@ -10,6 +8,10 @@ LL | bad!(foo whatever);
| ------------------ in this macro invocation | ------------------ in this macro invocation
| |
= note: this error originates in the macro `bad` (in Nightly builds, run with -Z macro-backtrace for more info) = note: this error originates in the macro `bad` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider changing this to be mutable
|
LL | let mut $s = 0;
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -8,7 +8,7 @@ impl S {
fn func(arg: S) { fn func(arg: S) {
//~^ HELP consider changing this to be mutable //~^ HELP consider changing this to be mutable
//~| SUGGESTION mut arg //~| SUGGESTION mut
arg.mutate(); arg.mutate();
//~^ ERROR cannot borrow `arg` as mutable, as it is not declared as mutable //~^ ERROR cannot borrow `arg` as mutable, as it is not declared as mutable
} }
@ -16,7 +16,7 @@ fn func(arg: S) {
fn main() { fn main() {
let local = S; let local = S;
//~^ HELP consider changing this to be mutable //~^ HELP consider changing this to be mutable
//~| SUGGESTION mut local //~| SUGGESTION mut
local.mutate(); local.mutate();
//~^ ERROR cannot borrow `local` as mutable, as it is not declared as mutable //~^ ERROR cannot borrow `local` as mutable, as it is not declared as mutable
} }

View file

@ -1,20 +1,24 @@
error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
--> $DIR/mut-suggestion.rs:12:5 --> $DIR/mut-suggestion.rs:12:5
| |
LL | fn func(arg: S) {
| --- help: consider changing this to be mutable: `mut arg`
...
LL | arg.mutate(); LL | arg.mutate();
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn func(mut arg: S) {
| +++
error[E0596]: cannot borrow `local` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `local` as mutable, as it is not declared as mutable
--> $DIR/mut-suggestion.rs:20:5 --> $DIR/mut-suggestion.rs:20:5
| |
LL | let local = S;
| ----- help: consider changing this to be mutable: `mut local`
...
LL | local.mutate(); LL | local.mutate();
| ^^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut local = S;
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,10 +1,13 @@
error[E0594]: cannot assign to `nyan.how_hungry`, as `nyan` is not declared as mutable error[E0594]: cannot assign to `nyan.how_hungry`, as `nyan` is not declared as mutable
--> $DIR/mutable-class-fields.rs:15:3 --> $DIR/mutable-class-fields.rs:15:3
| |
LL | let nyan : Cat = cat(52, 99);
| ---- help: consider changing this to be mutable: `mut nyan`
LL | nyan.how_hungry = 0; LL | nyan.how_hungry = 0;
| ^^^^^^^^^^^^^^^^^^^ cannot assign | ^^^^^^^^^^^^^^^^^^^ cannot assign
|
help: consider changing this to be mutable
|
LL | let mut nyan : Cat = cat(52, 99);
| +++
error: aborting due to previous error error: aborting due to previous error

View file

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

View file

@ -1,20 +1,24 @@
error[E0596]: cannot borrow `not_mut` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `not_mut` as mutable, as it is not declared as mutable
--> $DIR/nested-binding-modes-mut.rs:4:5 --> $DIR/nested-binding-modes-mut.rs:4:5
| |
LL | let mut is_mut @ not_mut = 42;
| ------- help: consider changing this to be mutable: `mut not_mut`
LL | &mut is_mut;
LL | &mut not_mut; LL | &mut not_mut;
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut is_mut @ mut not_mut = 42;
| +++
error[E0596]: cannot borrow `not_mut` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `not_mut` as mutable, as it is not declared as mutable
--> $DIR/nested-binding-modes-mut.rs:9:5 --> $DIR/nested-binding-modes-mut.rs:9:5
| |
LL | let not_mut @ mut is_mut = 42;
| ------- help: consider changing this to be mutable: `mut not_mut`
LL | &mut is_mut;
LL | &mut not_mut; LL | &mut not_mut;
| ^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut not_mut @ mut is_mut = 42;
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:53:24 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:53:24
| |
LL | fn deref_mut_field1(x: Own<Point>) {
| - help: consider changing this to be mutable: `mut x`
LL | let __isize = &mut x.y; LL | let __isize = &mut x.y;
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn deref_mut_field1(mut x: Own<Point>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:65:10 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:65:10
@ -30,10 +33,13 @@ LL | use_mut(_x);
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:88:5 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:88:5
| |
LL | fn assign_field1<'a>(x: Own<Point>) {
| - help: consider changing this to be mutable: `mut x`
LL | x.y = 3; LL | x.y = 3;
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn assign_field1<'a>(mut x: Own<Point>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:92:5 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:92:5
@ -59,10 +65,13 @@ LL | use_mut(_p);
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:109:5 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:109:5
| |
LL | fn deref_mut_method1(x: Own<Point>) {
| - help: consider changing this to be mutable: `mut x`
LL | x.set(0, 0); LL | x.set(0, 0);
| ^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn deref_mut_method1(mut x: Own<Point>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:121:5 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:121:5
@ -78,10 +87,13 @@ LL | fn deref_extend_mut_method1(x: &mut Own<Point>) -> &mut isize {
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:129:6 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:129:6
| |
LL | fn assign_method1<'a>(x: Own<Point>) {
| - help: consider changing this to be mutable: `mut x`
LL | *x.y_mut() = 3; LL | *x.y_mut() = 3;
| ^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn assign_method1<'a>(mut x: Own<Point>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:133:6 --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:133:6

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-deref-mut.rs:29:25 --> $DIR/borrowck-borrow-overloaded-deref-mut.rs:29:25
| |
LL | fn deref_mut1(x: Own<isize>) {
| - help: consider changing this to be mutable: `mut x`
LL | let __isize = &mut *x; LL | let __isize = &mut *x;
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn deref_mut1(mut x: Own<isize>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-deref-mut.rs:41:11 --> $DIR/borrowck-borrow-overloaded-deref-mut.rs:41:11
@ -20,10 +23,13 @@ LL | fn deref_extend_mut1<'a>(x: &'a mut Own<isize>) -> &'a mut isize {
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/borrowck-borrow-overloaded-deref-mut.rs:49:6 --> $DIR/borrowck-borrow-overloaded-deref-mut.rs:49:6
| |
LL | fn assign1<'a>(x: Own<isize>) {
| - help: consider changing this to be mutable: `mut x`
LL | *x = 3; LL | *x = 3;
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn assign1<'a>(mut x: Own<isize>) {
| +++
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
--> $DIR/borrowck-borrow-overloaded-deref-mut.rs:53:6 --> $DIR/borrowck-borrow-overloaded-deref-mut.rs:53:6

View file

@ -12,11 +12,13 @@ LL | fn borrowed_receiver(x: &mut dyn Foo) {
error[E0596]: cannot borrow `*x` as mutable, as `x` is not declared as mutable error[E0596]: cannot borrow `*x` as mutable, as `x` is not declared as mutable
--> $DIR/borrowck-object-mutability.rs:18:5 --> $DIR/borrowck-object-mutability.rs:18:5
| |
LL | fn owned_receiver(x: Box<dyn Foo>) {
| - help: consider changing this to be mutable: `mut x`
LL | x.borrowed();
LL | x.borrowed_mut(); LL | x.borrowed_mut();
| ^^^^^^^^^^^^^^^^ cannot borrow as mutable | ^^^^^^^^^^^^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | fn owned_receiver(mut x: Box<dyn Foo>) {
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -12,13 +12,16 @@ LL | tick1();
error[E0596]: cannot borrow `tick2` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `tick2` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:19:5 --> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:19:5
| |
LL | let tick2 = || {
| ----- help: consider changing this to be mutable: `mut tick2`
LL | tick1(); LL | tick1();
| ----- calling `tick2` requires mutable binding due to mutable borrow of `tick1` | ----- calling `tick2` requires mutable binding due to mutable borrow of `tick1`
... ...
LL | tick2(); LL | tick2();
| ^^^^^ cannot borrow as mutable | ^^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut tick2 = || {
| +++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -2,11 +2,14 @@ error[E0596]: cannot borrow `tick` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closures-infer-fnmut-missing-mut.rs:7:5 --> $DIR/unboxed-closures-infer-fnmut-missing-mut.rs:7:5
| |
LL | let tick = || counter += 1; LL | let tick = || counter += 1;
| ---- ------- calling `tick` requires mutable binding due to mutable borrow of `counter` | ------- calling `tick` requires mutable binding due to mutable borrow of `counter`
| |
| help: consider changing this to be mutable: `mut tick`
LL | tick(); LL | tick();
| ^^^^ cannot borrow as mutable | ^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut tick = || counter += 1;
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -2,11 +2,14 @@ error[E0596]: cannot borrow `tick` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closures-infer-fnmut-move-missing-mut.rs:7:5 --> $DIR/unboxed-closures-infer-fnmut-move-missing-mut.rs:7:5
| |
LL | let tick = move || counter += 1; LL | let tick = move || counter += 1;
| ---- ------- calling `tick` requires mutable binding due to possible mutation of `counter` | ------- calling `tick` requires mutable binding due to possible mutation of `counter`
| |
| help: consider changing this to be mutable: `mut tick`
LL | tick(); LL | tick();
| ^^^^ cannot borrow as mutable | ^^^^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut tick = move || counter += 1;
| +++
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,13 @@
error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
--> $DIR/writing-to-immutable-vec.rs:3:5 --> $DIR/writing-to-immutable-vec.rs:3:5
| |
LL | let v: Vec<isize> = vec![1, 2, 3];
| - help: consider changing this to be mutable: `mut v`
LL | v[1] = 4; LL | v[1] = 4;
| ^ cannot borrow as mutable | ^ cannot borrow as mutable
|
help: consider changing this to be mutable
|
LL | let mut v: Vec<isize> = vec![1, 2, 3];
| +++
error: aborting due to previous error error: aborting due to previous error