File tree 2 files changed +45
-0
lines changed
2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change
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
+ // Errors with `nll` which is already tested in enough other tests,
8
+ // so we ignore it here.
9
+ //
10
+ // ignore-compare-mode-nll
11
+
12
+ struct Repro ;
13
+ impl Repro {
14
+ fn get ( & self ) -> & i32 {
15
+ & 3
16
+ }
17
+
18
+ fn insert ( & mut self , _: i32 ) { }
19
+ }
20
+
21
+ fn main ( ) {
22
+ let x = & 0 ;
23
+ let mut conflict = Repro ;
24
+ let prev = conflict. get ( ) ;
25
+ conflict. insert ( * prev + * x) ;
26
+ //~^ WARN cannot borrow `conflict` as mutable because it is also borrowed as immutable
27
+ //~| WARN this borrowing pattern was not meant to be accepted
28
+ }
Original file line number Diff line number Diff line change
1
+ warning: cannot borrow `conflict` as mutable because it is also borrowed as immutable
2
+ --> $DIR/lint-no-err.rs:25: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
+
You can’t perform that action at this time.
0 commit comments