]> git.lizzy.rs Git - rust.git/commitdiff
Add test demonstrating no more ICE
authorMichael Goulet <michael@errs.io>
Thu, 25 Nov 2021 16:33:01 +0000 (16:33 +0000)
committerMichael Goulet <michael@errs.io>
Thu, 25 Nov 2021 16:34:30 +0000 (16:34 +0000)
src/test/ui/borrowck/issue-91206.rs [new file with mode: 0644]
src/test/ui/borrowck/issue-91206.stderr [new file with mode: 0644]

diff --git a/src/test/ui/borrowck/issue-91206.rs b/src/test/ui/borrowck/issue-91206.rs
new file mode 100644 (file)
index 0000000..3b1fbf4
--- /dev/null
@@ -0,0 +1,15 @@
+struct TestClient;
+
+impl TestClient {
+    fn get_inner_ref(&self) -> &Vec<usize> {
+        todo!()
+    }
+}
+
+fn main() {
+    let client = TestClient;
+    let inner = client.get_inner_ref();
+    //~^ HELP consider changing this to be a mutable reference
+    inner.clear();
+    //~^ ERROR cannot borrow `*inner` as mutable, as it is behind a `&` reference [E0596]
+}
diff --git a/src/test/ui/borrowck/issue-91206.stderr b/src/test/ui/borrowck/issue-91206.stderr
new file mode 100644 (file)
index 0000000..535d247
--- /dev/null
@@ -0,0 +1,12 @@
+error[E0596]: cannot borrow `*inner` as mutable, as it is behind a `&` reference
+  --> $DIR/issue-91206.rs:13:5
+   |
+LL |     let inner = client.get_inner_ref();
+   |         ----- help: consider changing this to be a mutable reference: `&mut Vec<usize>`
+LL |
+LL |     inner.clear();
+   |     ^^^^^^^^^^^^^ `inner` is a `&` reference, so the data it refers to cannot be borrowed as mutable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0596`.