diff options
Diffstat (limited to 'src/test/ui/nll/match-on-borrowed.rs')
-rw-r--r-- | src/test/ui/nll/match-on-borrowed.rs | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/test/ui/nll/match-on-borrowed.rs b/src/test/ui/nll/match-on-borrowed.rs deleted file mode 100644 index 447dabeb4..000000000 --- a/src/test/ui/nll/match-on-borrowed.rs +++ /dev/null @@ -1,96 +0,0 @@ -// Test that a (partially) mutably borrowed place can be matched on, so long as -// we don't have to read any values that are mutably borrowed to determine -// which arm to take. -// -// Test that we don't allow mutating the value being matched on in a way that -// changes which patterns it matches, until we have chosen an arm. - -struct A(i32, i32); - -fn struct_example(mut a: A) { - let x = &mut a.0; - match a { // OK, no access of borrowed data - _ if false => (), - A(_, r) => (), - } - x; -} - -fn indirect_struct_example(mut b: &mut A) { - let x = &mut b.0; - match *b { // OK, no access of borrowed data - _ if false => (), - A(_, r) => (), - } - x; -} - -fn underscore_example(mut c: i32) { - let r = &mut c; - match c { // OK, no access of borrowed data (or any data at all) - _ if false => (), - _ => (), - } - r; -} - -enum E { - V(i32, i32), - W, -} - -fn enum_example(mut e: E) { - let x = match e { - E::V(ref mut x, _) => x, - E::W => panic!(), - }; - match e { // Don't know that E uses a tag for its discriminant - //~^ ERROR - _ if false => (), - E::V(_, r) => (), - E::W => (), - } - x; -} - -fn indirect_enum_example(mut f: &mut E) { - let x = match *f { - E::V(ref mut x, _) => x, - E::W => panic!(), - }; - match f { // Don't know that E uses a tag for its discriminant - //~^ ERROR - _ if false => (), - E::V(_, r) => (), - E::W => (), - } - x; -} - -fn match_on_muatbly_borrowed_ref(mut p: &bool) { - let r = &mut p; - match *p { // OK, no access at all - _ if false => (), - _ => (), - } - r; -} - -fn match_on_borrowed(mut t: bool) { - let x = &mut t; - match t { - //~^ ERROR - true => (), - false => (), - } - x; -} - -enum Never {} - -fn never_init() { - let n: Never; - match n {} //~ ERROR -} - -fn main() {} |