diff options
| author | lcnr <rust@lcnr.de> | 2022-03-03 11:57:14 +0100 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2022-03-07 07:35:20 +0100 |
| commit | dad81b65db1b67be7f24b2a418c66db10aecd4b5 (patch) | |
| tree | eb8fe07599634c1c1d433983847eae96af2a7363 /src/test | |
| parent | 2f8d1a835b4e7feaf625f74d0d5cb9b84dbc845a (diff) | |
| download | rust-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.rs | 28 | ||||
| -rw-r--r-- | src/test/ui/nll/lint-no-err.stderr | 17 |
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 + |
