1 #![feature(box_syntax)]
4 struct A { a: isize, b: isize }
6 struct B { a: isize, b: Box<isize> }
8 fn var_copy_after_var_borrow() {
11 drop(x); //~ ERROR cannot use `x` because it was mutably borrowed
15 fn var_copy_after_field_borrow() {
16 let mut x = A { a: 1, b: 2 };
18 drop(x); //~ ERROR cannot use `x` because it was mutably borrowed
22 fn field_copy_after_var_borrow() {
23 let mut x = A { a: 1, b: 2 };
25 drop(x.a); //~ ERROR cannot use `x.a` because it was mutably borrowed
29 fn field_copy_after_field_borrow() {
30 let mut x = A { a: 1, b: 2 };
32 drop(x.a); //~ ERROR cannot use `x.a` because it was mutably borrowed
36 fn fu_field_copy_after_var_borrow() {
37 let mut x = A { a: 1, b: 2 };
39 let y = A { b: 3, .. x }; //~ ERROR cannot use `x.a` because it was mutably borrowed
44 fn fu_field_copy_after_field_borrow() {
45 let mut x = A { a: 1, b: 2 };
47 let y = A { b: 3, .. x }; //~ ERROR cannot use `x.a` because it was mutably borrowed
52 fn var_deref_after_var_borrow() {
53 let mut x: Box<isize> = box 1;
55 drop(*x); //~ ERROR cannot use `*x` because it was mutably borrowed
59 fn field_deref_after_var_borrow() {
60 let mut x = B { a: 1, b: box 2 };
62 drop(*x.b); //~ ERROR cannot use `*x.b` because it was mutably borrowed
66 fn field_deref_after_field_borrow() {
67 let mut x = B { a: 1, b: box 2 };
69 drop(*x.b); //~ ERROR cannot use `*x.b` because it was mutably borrowed
74 var_copy_after_var_borrow();
75 var_copy_after_field_borrow();
77 field_copy_after_var_borrow();
78 field_copy_after_field_borrow();
80 fu_field_copy_after_var_borrow();
81 fu_field_copy_after_field_borrow();
83 var_deref_after_var_borrow();
84 field_deref_after_var_borrow();
85 field_deref_after_field_borrow();