13 fn make_foo() -> Box<Foo> { panic!() }
15 fn borrow_same_field_twice_mut_mut() {
16 let mut foo = make_foo();
17 let bar1 = &mut foo.bar1;
18 let _bar2 = &mut foo.bar1; //~ ERROR cannot borrow
22 fn borrow_same_field_twice_mut_imm() {
23 let mut foo = make_foo();
24 let bar1 = &mut foo.bar1;
25 let _bar2 = &foo.bar1; //~ ERROR cannot borrow
29 fn borrow_same_field_twice_imm_mut() {
30 let mut foo = make_foo();
32 let _bar2 = &mut foo.bar1; //~ ERROR cannot borrow
36 fn borrow_same_field_twice_imm_imm() {
37 let mut foo = make_foo();
39 let _bar2 = &foo.bar1;
43 fn borrow_both_fields_mut() {
44 let mut foo = make_foo();
45 let bar1 = &mut foo.bar1;
46 let _bar2 = &mut foo.bar2;
50 fn borrow_both_mut_pattern() {
51 let mut foo = make_foo();
53 Foo { bar1: ref mut _bar1, bar2: ref mut _bar2 } => {
60 fn borrow_var_and_pattern() {
61 let mut foo = make_foo();
62 let bar1 = &mut foo.bar1;
64 Foo { bar1: ref mut _bar1, bar2: _ } => {}
65 //~^ ERROR cannot borrow
70 fn borrow_mut_and_base_imm() {
71 let mut foo = make_foo();
72 let bar1 = &mut foo.bar1.int1;
73 let _foo1 = &foo.bar1; //~ ERROR cannot borrow
74 let _foo2 = &*foo; //~ ERROR cannot borrow
78 fn borrow_mut_and_base_mut() {
79 let mut foo = make_foo();
80 let bar1 = &mut foo.bar1.int1;
81 let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
85 fn borrow_mut_and_base_mut2() {
86 let mut foo = make_foo();
87 let bar1 = &mut foo.bar1.int1;
88 let _foo2 = &mut *foo; //~ ERROR cannot borrow
92 fn borrow_imm_and_base_mut() {
93 let mut foo = make_foo();
94 let bar1 = &foo.bar1.int1;
95 let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
99 fn borrow_imm_and_base_mut2() {
100 let mut foo = make_foo();
101 let bar1 = &foo.bar1.int1;
102 let _foo2 = &mut *foo; //~ ERROR cannot borrow
106 fn borrow_imm_and_base_imm() {
107 let mut foo = make_foo();
108 let bar1 = &foo.bar1.int1;
109 let _foo1 = &foo.bar1;
114 fn borrow_mut_and_imm() {
115 let mut foo = make_foo();
116 let bar1 = &mut foo.bar1;
117 let _foo1 = &foo.bar2;
120 fn borrow_mut_from_imm() {
121 let foo = make_foo();
122 let bar1 = &mut foo.bar1; //~ ERROR cannot borrow
126 fn borrow_long_path_both_mut() {
127 let mut foo = make_foo();
128 let bar1 = &mut foo.bar1.int1;
129 let foo1 = &mut foo.bar2.int2;