about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-03-04 21:59:13 -0800
committerMichael Goulet <michael@errs.io>2022-05-17 20:21:54 -0700
commita5c4f4cc4b14b2dff2506d08defb1b97adcbf333 (patch)
treec04d82a4d30d2856726dc5078528963892583260 /src
parent4c5f6e6277b89e47d73a192078697f7a5f3dc0ac (diff)
downloadrust-a5c4f4cc4b14b2dff2506d08defb1b97adcbf333.tar.gz
rust-a5c4f4cc4b14b2dff2506d08defb1b97adcbf333.zip
Suggest deref non-lvalue mutable reference
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/typeck/assign-non-lval-mut-ref.fixed7
-rw-r--r--src/test/ui/typeck/assign-non-lval-mut-ref.rs7
-rw-r--r--src/test/ui/typeck/assign-non-lval-mut-ref.stderr16
-rw-r--r--src/test/ui/typeck/issue-93486.stderr5
4 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.fixed b/src/test/ui/typeck/assign-non-lval-mut-ref.fixed
new file mode 100644
index 00000000000..76e2afc672a
--- /dev/null
+++ b/src/test/ui/typeck/assign-non-lval-mut-ref.fixed
@@ -0,0 +1,7 @@
+// run-rustfix
+
+fn main() {
+    let mut x = vec![1usize];
+    *x.last_mut().unwrap() = 2usize;
+    //~^ ERROR invalid left-hand side of assignment
+}
diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.rs b/src/test/ui/typeck/assign-non-lval-mut-ref.rs
new file mode 100644
index 00000000000..ff91f2297c8
--- /dev/null
+++ b/src/test/ui/typeck/assign-non-lval-mut-ref.rs
@@ -0,0 +1,7 @@
+// run-rustfix
+
+fn main() {
+    let mut x = vec![1usize];
+    x.last_mut().unwrap() = 2usize;
+    //~^ ERROR invalid left-hand side of assignment
+}
diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.stderr b/src/test/ui/typeck/assign-non-lval-mut-ref.stderr
new file mode 100644
index 00000000000..745ada5de0b
--- /dev/null
+++ b/src/test/ui/typeck/assign-non-lval-mut-ref.stderr
@@ -0,0 +1,16 @@
+error[E0070]: invalid left-hand side of assignment
+  --> $DIR/assign-non-lval-mut-ref.rs:5:27
+   |
+LL |     x.last_mut().unwrap() = 2usize;
+   |     --------------------- ^
+   |     |
+   |     cannot assign to this expression
+   |
+help: consider dereferencing here to assign to the mutable borrowed piece of memory
+   |
+LL |     *x.last_mut().unwrap() = 2usize;
+   |     +
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0070`.
diff --git a/src/test/ui/typeck/issue-93486.stderr b/src/test/ui/typeck/issue-93486.stderr
index 70b5b63f1cb..95eb021965f 100644
--- a/src/test/ui/typeck/issue-93486.stderr
+++ b/src/test/ui/typeck/issue-93486.stderr
@@ -5,6 +5,11 @@ LL |         vec![].last_mut().unwrap() = 3_u8;
    |         -------------------------- ^
    |         |
    |         cannot assign to this expression
+   |
+help: consider dereferencing here to assign to the mutable borrowed piece of memory
+   |
+LL |         *vec![].last_mut().unwrap() = 3_u8;
+   |         +
 
 error: aborting due to previous error