about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-01-06 12:01:03 +0100
committerGitHub <noreply@github.com>2022-01-06 12:01:03 +0100
commit96a267ee1fb20fe7c77e1feb8742de467f3e7d23 (patch)
tree6c7eec0800a145a9853cda34d9496ea8c94f528a
parentfb87e7ceed416f59196619df322710dfe5ba9cb3 (diff)
parent57ac3179422248ac4f06210e4120c40f86e50dce (diff)
downloadrust-96a267ee1fb20fe7c77e1feb8742de467f3e7d23.tar.gz
rust-96a267ee1fb20fe7c77e1feb8742de467f3e7d23.zip
Rollup merge of #92389 - chordtoll:test-92015, r=Mark-Simulacrum
Regression test for borrowck ICE #92015

This issue has come up a few times. Creating a regression test.
Closes #92015.
-rw-r--r--src/test/ui/borrowck/issue-92015.rs7
-rw-r--r--src/test/ui/borrowck/issue-92015.stderr11
2 files changed, 18 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/issue-92015.rs b/src/test/ui/borrowck/issue-92015.rs
new file mode 100644
index 00000000000..16d651717ff
--- /dev/null
+++ b/src/test/ui/borrowck/issue-92015.rs
@@ -0,0 +1,7 @@
+// Regression test for #92105.
+// ICE when mutating immutable reference from last statement of a block.
+
+fn main() {
+    let foo = Some(&0).unwrap();
+    *foo = 1; //~ ERROR cannot assign
+}
diff --git a/src/test/ui/borrowck/issue-92015.stderr b/src/test/ui/borrowck/issue-92015.stderr
new file mode 100644
index 00000000000..32a65d3b5bb
--- /dev/null
+++ b/src/test/ui/borrowck/issue-92015.stderr
@@ -0,0 +1,11 @@
+error[E0594]: cannot assign to `*foo`, which is behind a `&` reference
+  --> $DIR/issue-92015.rs:6:5
+   |
+LL |     let foo = Some(&0).unwrap();
+   |         --- help: consider changing this to be a mutable reference: `&mut i32`
+LL |     *foo = 1;
+   |     ^^^^^^^^ `foo` is a `&` reference, so the data it refers to cannot be written
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0594`.