11 fn borrow_same_field_twice_mut_mut(foo: &mut Foo) {
12 let _bar1 = &mut foo.bar1;
13 let _bar2 = &mut foo.bar1; //~ ERROR cannot borrow
16 fn borrow_same_field_twice_mut_imm(foo: &mut Foo) {
17 let _bar1 = &mut foo.bar1;
18 let _bar2 = &foo.bar1; //~ ERROR cannot borrow
21 fn borrow_same_field_twice_imm_mut(foo: &mut Foo) {
22 let _bar1 = &foo.bar1;
23 let _bar2 = &mut foo.bar1; //~ ERROR cannot borrow
26 fn borrow_same_field_twice_imm_imm(foo: &mut Foo) {
27 let _bar1 = &foo.bar1;
28 let _bar2 = &foo.bar1;
31 fn borrow_both_mut(foo: &mut Foo) {
32 let _bar1 = &mut foo.bar1;
33 let _bar2 = &mut foo.bar2;
36 fn borrow_both_mut_pattern(foo: &mut Foo) {
38 Foo { bar1: ref mut _bar1, bar2: ref mut _bar2 } =>
39 { use_mut(_bar1); use_mut(_bar2); }
42 fn borrow_var_and_pattern(foo: &mut Foo) {
43 let _bar1 = &mut foo.bar1;
45 Foo { bar1: ref mut _bar1, bar2: _ } => {}
46 //~^ ERROR cannot borrow
50 fn borrow_mut_and_base_imm(foo: &mut Foo) {
51 let _bar1 = &mut foo.bar1.int1;
52 let _foo1 = &foo.bar1; //~ ERROR cannot borrow
53 let _foo2 = &*foo; //~ ERROR cannot borrow
56 fn borrow_mut_and_base_mut(foo: &mut Foo) {
57 let _bar1 = &mut foo.bar1.int1;
58 let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
61 fn borrow_mut_and_base_mut2(foo: &mut Foo) {
62 let _bar1 = &mut foo.bar1.int1;
63 let _foo2 = &mut *foo; //~ ERROR cannot borrow
66 fn borrow_imm_and_base_mut(foo: &mut Foo) {
67 let _bar1 = &foo.bar1.int1;
68 let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
71 fn borrow_imm_and_base_mut2(foo: &mut Foo) {
72 let _bar1 = &foo.bar1.int1;
73 let _foo2 = &mut *foo; //~ ERROR cannot borrow
76 fn borrow_imm_and_base_imm(foo: &mut Foo) {
77 let _bar1 = &foo.bar1.int1;
78 let _foo1 = &foo.bar1;
82 fn borrow_mut_and_imm(foo: &mut Foo) {
83 let _bar1 = &mut foo.bar1;
84 let _foo1 = &foo.bar2;
87 fn borrow_mut_from_imm(foo: &Foo) {
88 let _bar1 = &mut foo.bar1; //~ ERROR cannot borrow
91 fn borrow_long_path_both_mut(foo: &mut Foo) {
92 let _bar1 = &mut foo.bar1.int1;
93 let _foo1 = &mut foo.bar2.int2;
98 fn use_mut<T>(_: &mut T) { }
99 fn use_imm<T>(_: &T) { }