Do not emit invalid suggestions on multiple mutable borrow errors
This commit is contained in:
parent
607d6b00d4
commit
c8a8a23a31
4 changed files with 58 additions and 8 deletions
15
src/test/ui/borrowck/issue-85581.rs
Normal file
15
src/test/ui/borrowck/issue-85581.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// Regression test of #85581.
|
||||
// Checks not to suggest to add `;` when the second mutable borrow
|
||||
// is in the first's scope.
|
||||
|
||||
use std::collections::BinaryHeap;
|
||||
|
||||
fn foo(heap: &mut BinaryHeap<i32>) {
|
||||
match heap.peek_mut() {
|
||||
Some(_) => { heap.pop(); },
|
||||
//~^ ERROR: cannot borrow `*heap` as mutable more than once at a time
|
||||
None => (),
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
17
src/test/ui/borrowck/issue-85581.stderr
Normal file
17
src/test/ui/borrowck/issue-85581.stderr
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
error[E0499]: cannot borrow `*heap` as mutable more than once at a time
|
||||
--> $DIR/issue-85581.rs:9:22
|
||||
|
|
||||
LL | match heap.peek_mut() {
|
||||
| ---------------
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
| a temporary with access to the first borrow is created here ...
|
||||
LL | Some(_) => { heap.pop(); },
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - ... and the first borrow might be used here, when that temporary is dropped and runs the destructor for type `Option<PeekMut<'_, i32>>`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0499`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue