error[E0503]: cannot use `self.cx` because it was mutably borrowed --> $DIR/two-phase-surprise-no-conflict.rs:30:23 | LL | let _mut_borrow = &mut *self; | ---------- borrow of `*self` occurs here LL | let _access = self.cx; | ^^^^^^^ use of borrowed `*self` ... LL | _mut_borrow; | ----------- borrow later used here error[E0502]: cannot borrow `*self.cx` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:54:33 | LL | self.hash_expr(&self.cx.body(eid).value); | ---- --------- ^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `*self.cx_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:69:33 | LL | self.hash_expr(&self.cx_mut.body(eid).value); | ---- --------- ^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:121:51 | LL | reg.register_static(Box::new(TrivialPass::new(®.sess_mut))); | --- --------------- ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:125:50 | LL | reg.register_bound(Box::new(TrivialPass::new(®.sess_mut))); | --- -------------- ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:129:49 | LL | reg.register_univ(Box::new(TrivialPass::new(®.sess_mut))); | --- ------------- ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:133:40 | LL | reg.register_ref(&TrivialPass::new(®.sess_mut)); | --- ------------ ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:141:51 | LL | reg.register_static(Box::new(TrivialPass::new(&mut reg.sess_mut))); | --- --------------- ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:146:54 | LL | reg.register_bound(Box::new(TrivialPass::new_mut(&mut reg.sess_mut))); | --- -------------- ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:151:53 | LL | reg.register_univ(Box::new(TrivialPass::new_mut(&mut reg.sess_mut))); | --- ------------- ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:156:44 | LL | reg.register_ref(&TrivialPass::new_mut(&mut reg.sess_mut)); | --- ------------ ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:168:50 | LL | reg.register_bound(Box::new(CapturePass::new(®.sess_mut))); | --- -------------- ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:173:49 | LL | reg.register_univ(Box::new(CapturePass::new(®.sess_mut))); | --- ------------- ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:178:40 | LL | reg.register_ref(&CapturePass::new(®.sess_mut)); | --- ------------ ^^^^^^^^^^^^^ immutable borrow occurs here | | | | | mutable borrow later used by call | mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:190:54 | LL | reg.register_bound(Box::new(CapturePass::new_mut(&mut reg.sess_mut))); | --- -------------- ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:196:53 | LL | reg.register_univ(Box::new(CapturePass::new_mut(&mut reg.sess_mut))); | --- ------------- ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time --> $DIR/two-phase-surprise-no-conflict.rs:202:44 | LL | reg.register_ref(&CapturePass::new_mut(&mut reg.sess_mut)); | --- ------------ ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here | | | | | first borrow later used by call | first mutable borrow occurs here error: aborting due to 17 previous errors Some errors occurred: E0499, E0502, E0503. For more information about an error, try `rustc --explain E0499`.