about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorlcnr <rust@lcnr.de>2022-03-03 11:57:14 +0100
committerlcnr <rust@lcnr.de>2022-03-07 07:35:20 +0100
commitdad81b65db1b67be7f24b2a418c66db10aecd4b5 (patch)
treeeb8fe07599634c1c1d433983847eae96af2a7363 /src/test
parent2f8d1a835b4e7feaf625f74d0d5cb9b84dbc845a (diff)
downloadrust-dad81b65db1b67be7f24b2a418c66db10aecd4b5.tar.gz
rust-dad81b65db1b67be7f24b2a418c66db10aecd4b5.zip
add tests for #94502
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/nll/lint-no-err.rs28
-rw-r--r--src/test/ui/nll/lint-no-err.stderr17
2 files changed, 45 insertions, 0 deletions
diff --git a/src/test/ui/nll/lint-no-err.rs b/src/test/ui/nll/lint-no-err.rs
new file mode 100644
index 00000000000..4b4169faadf
--- /dev/null
+++ b/src/test/ui/nll/lint-no-err.rs
@@ -0,0 +1,28 @@
+// check-pass
+
+// mir borrowck previously incorrectly set `tainted_by_errors`
+// when buffering lints, which resulted in ICE later on,
+// see #94502.
+
+// Errors with `nll` which is already tested in enough other tests,
+// so we ignore it here.
+//
+// ignore-compare-mode-nll
+
+struct Repro;
+impl Repro {
+    fn get(&self) -> &i32 {
+        &3
+    }
+
+    fn insert(&mut self, _: i32) {}
+}
+
+fn main() {
+    let x = &0;
+    let mut conflict = Repro;
+    let prev = conflict.get();
+    conflict.insert(*prev + *x);
+    //~^ WARN cannot borrow `conflict` as mutable because it is also borrowed as immutable
+    //~| WARN this borrowing pattern was not meant to be accepted
+}
diff --git a/src/test/ui/nll/lint-no-err.stderr b/src/test/ui/nll/lint-no-err.stderr
new file mode 100644
index 00000000000..1e7aecfaa64
--- /dev/null
+++ b/src/test/ui/nll/lint-no-err.stderr
@@ -0,0 +1,17 @@
+warning: cannot borrow `conflict` as mutable because it is also borrowed as immutable
+  --> $DIR/lint-no-err.rs:25:5
+   |
+LL |     let prev = conflict.get();
+   |                -------------- immutable borrow occurs here
+LL |     conflict.insert(*prev + *x);
+   |     ^^^^^^^^^^^^^^^^-----^^^^^^
+   |     |               |
+   |     |               immutable borrow later used here
+   |     mutable borrow occurs here
+   |
+   = note: `#[warn(mutable_borrow_reservation_conflict)]` on by default
+   = warning: this borrowing pattern was not meant to be accepted, and may become a hard error in the future
+   = note: for more information, see issue #59159 <https://github.com/rust-lang/rust/issues/59159>
+
+warning: 1 warning emitted
+