diff options
| author | Yuki Okushi <yuki.okushi@huawei.com> | 2021-06-16 09:44:47 +0900 |
|---|---|---|
| committer | Yuki Okushi <yuki.okushi@huawei.com> | 2021-06-16 09:47:37 +0900 |
| commit | c8a8a23a31e9e4831ccab4efbc085852b7a86fa5 (patch) | |
| tree | 074d75d29709da564dcde36f8981b9505897a9a7 /src/test | |
| parent | 607d6b00d4e0e0475b8de9d0c870b7126fdcdf6b (diff) | |
| download | rust-c8a8a23a31e9e4831ccab4efbc085852b7a86fa5.tar.gz rust-c8a8a23a31e9e4831ccab4efbc085852b7a86fa5.zip | |
Do not emit invalid suggestions on multiple mutable borrow errors
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/borrowck/issue-85581.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/borrowck/issue-85581.stderr | 17 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/issue-85581.rs b/src/test/ui/borrowck/issue-85581.rs new file mode 100644 index 00000000000..ccc120c5421 --- /dev/null +++ b/src/test/ui/borrowck/issue-85581.rs @@ -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() {} diff --git a/src/test/ui/borrowck/issue-85581.stderr b/src/test/ui/borrowck/issue-85581.stderr new file mode 100644 index 00000000000..29c0429f2a0 --- /dev/null +++ b/src/test/ui/borrowck/issue-85581.stderr @@ -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`. |
