Skip to content

Commit 188ae00

Browse files
committed
add tests for #94502
1 parent 2f8d1a8 commit 188ae00

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/test/ui/nll/lint-no-err.rs

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// check-pass
2+
3+
// mir borrowck previously incorrectly set `tainted_by_errors`
4+
// when buffering lints, which resulted in ICE later on,
5+
// see #94502.
6+
7+
struct Repro;
8+
impl Repro {
9+
fn get(&self) -> &i32 {
10+
&3
11+
}
12+
13+
fn insert(&mut self, _: i32) {}
14+
}
15+
16+
fn main() {
17+
let x = &0;
18+
let mut conflict = Repro;
19+
let prev = conflict.get();
20+
conflict.insert(*prev + *x);
21+
//~^ WARN cannot borrow `conflict` as mutable because it is also borrowed as immutable
22+
//~| WARN this borrowing pattern was not meant to be accepted
23+
}

src/test/ui/nll/lint-no-err.stderr

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
warning: cannot borrow `conflict` as mutable because it is also borrowed as immutable
2+
--> $DIR/lint-no-err.rs:20:5
3+
|
4+
LL | let prev = conflict.get();
5+
| -------------- immutable borrow occurs here
6+
LL | conflict.insert(*prev + *x);
7+
| ^^^^^^^^^^^^^^^^-----^^^^^^
8+
| | |
9+
| | immutable borrow later used here
10+
| mutable borrow occurs here
11+
|
12+
= note: `#[warn(mutable_borrow_reservation_conflict)]` on by default
13+
= warning: this borrowing pattern was not meant to be accepted, and may become a hard error in the future
14+
= note: for more information, see issue #59159 <https://github.com/rust-lang/rust/issues/59159>
15+
16+
warning: 1 warning emitted
17+

0 commit comments

Comments
 (0)