Do not emit invalid suggestions on multiple mutable borrow errors

This commit is contained in:
Yuki Okushi 2021-06-16 09:44:47 +09:00
parent 607d6b00d4
commit c8a8a23a31
No known key found for this signature in database
GPG key ID: DABA5B072961C18A
4 changed files with 58 additions and 8 deletions

View 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() {}

View 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`.