mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
Add regression test for pattern checks
This commit is contained in:
parent
d95f6a9532
commit
b60f08a66d
22
tests/ui/pattern/usefulness/conflicting_bindings.rs
Normal file
22
tests/ui/pattern/usefulness/conflicting_bindings.rs
Normal file
@ -0,0 +1,22 @@
|
||||
#![feature(if_let_guard, let_chains)]
|
||||
|
||||
fn main() {
|
||||
let mut x = Some(String::new());
|
||||
let ref mut y @ ref mut z = x;
|
||||
//~^ ERROR: mutable more than once
|
||||
let Some(ref mut y @ ref mut z) = x else { return };
|
||||
//~^ ERROR: mutable more than once
|
||||
if let Some(ref mut y @ ref mut z) = x {}
|
||||
//~^ ERROR: mutable more than once
|
||||
if let Some(ref mut y @ ref mut z) = x && true {}
|
||||
while let Some(ref mut y @ ref mut z) = x {}
|
||||
//~^ ERROR: mutable more than once
|
||||
while let Some(ref mut y @ ref mut z) = x && true {}
|
||||
match x {
|
||||
ref mut y @ ref mut z => {} //~ ERROR: mutable more than once
|
||||
}
|
||||
match () {
|
||||
() if let Some(ref mut y @ ref mut z) = x => {} //~ ERROR: mutable more than once
|
||||
_ => {}
|
||||
}
|
||||
}
|
50
tests/ui/pattern/usefulness/conflicting_bindings.stderr
Normal file
50
tests/ui/pattern/usefulness/conflicting_bindings.stderr
Normal file
@ -0,0 +1,50 @@
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:5:9
|
||||
|
|
||||
LL | let ref mut y @ ref mut z = x;
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:7:14
|
||||
|
|
||||
LL | let Some(ref mut y @ ref mut z) = x else { return };
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:9:17
|
||||
|
|
||||
LL | if let Some(ref mut y @ ref mut z) = x {}
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:12:20
|
||||
|
|
||||
LL | while let Some(ref mut y @ ref mut z) = x {}
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:16:9
|
||||
|
|
||||
LL | ref mut y @ ref mut z => {}
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: cannot borrow value as mutable more than once at a time
|
||||
--> $DIR/conflicting_bindings.rs:19:24
|
||||
|
|
||||
LL | () if let Some(ref mut y @ ref mut z) = x => {}
|
||||
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
|
||||
| |
|
||||
| value is mutably borrowed by `y` here
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user