summaryrefslogtreecommitdiffstats
path: root/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs')
-rw-r--r--src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs136
1 files changed, 0 insertions, 136 deletions
diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs b/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs
deleted file mode 100644
index 6bc0d346c..000000000
--- a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-enum Option<T> {
- None,
- Some(T),
-}
-
-fn main() {
- match &mut Some(1) {
- ref mut z @ &mut Some(ref a) => {
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- **z = None;
- println!("{}", *a);
- }
- _ => ()
- }
-
- struct U;
-
- // Prevent promotion:
- fn u() -> U { U }
-
- fn f1(ref a @ ref mut b: U) {}
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- fn f2(ref mut a @ ref b: U) {}
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- fn f3(ref a @ [ref b, ref mut mid @ .., ref c]: [U; 4]) {}
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- fn f4_also_moved(ref a @ ref mut b @ c: U) {}
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot move out of value because it is borrowed
- //~| ERROR borrow of moved value
-
- let ref mut a @ (ref b @ ref mut c) = u(); // sub-in-sub
- //~^ ERROR cannot borrow value as mutable more than once at a time
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
-
- let ref a @ ref mut b = U;
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- let ref mut a @ ref b = U;
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- let ref a @ (ref mut b, ref mut c) = (U, U);
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- let ref mut a @ (ref b, ref c) = (U, U);
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
-
- let ref mut a @ ref b = u();
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- *a = u();
- drop(b);
- let ref a @ ref mut b = u();
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *b = u();
- drop(a);
-
- let ref mut a @ ref b = U;
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *a = U;
- drop(b);
- let ref a @ ref mut b = U;
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- *b = U;
- drop(a);
-
- match Ok(U) {
- ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) => {
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *a = Err(U);
- drop(b);
- }
- }
-
- match Ok(U) {
- ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) => {
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- *b = U;
- drop(a);
- }
- }
-
- match Ok(U) {
- ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { *b = U; false } => {}
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot assign to `*b`, as it is immutable for the pattern guard
- _ => {}
- }
- match Ok(U) {
- ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { *a = Err(U); false } => {}
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot assign to `*a`, as it is immutable for the pattern guard
- _ => {}
- }
- match Ok(U) {
- ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { drop(b); false } => {}
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot move out of `b` in pattern guard
- //~| ERROR cannot move out of `b` in pattern guard
- _ => {}
- }
- match Ok(U) {
- ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { drop(a); false } => {}
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- //~| ERROR cannot move out of `a` in pattern guard
- //~| ERROR cannot move out of `a` in pattern guard
- _ => {}
- }
-
- let ref a @ (ref mut b, ref mut c) = (U, U);
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *b = U;
- *c = U;
-
- let ref a @ (ref mut b, ref mut c) = (U, U);
- //~^ ERROR cannot borrow value as mutable because it is also borrowed as immutable
- //~| ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *b = U;
- drop(a);
-
- let ref a @ (ref mut b, ref mut c) = (U, U);
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
- *b = U; //~| ERROR cannot borrow value as mutable because it is also borrowed as immutable
- *c = U;
- drop(a);
- let ref mut a @ (ref b, ref c) = (U, U);
- //~^ ERROR cannot borrow value as immutable because it is also borrowed as mutable
-}