error[E0503]: cannot use `self.cx` because it was mutably borrowed --> $DIR/two-phase-surprise-no-conflict.rs:30:13 | LL | let _mut_borrow = &mut *self; | ----- borrow of `*self` occurs here LL | let _access = self.cx; | ^^^^^^^ use of borrowed `*self` error[E0502]: cannot borrow `*self.cx_mut` as immutable because `*self` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:69:33 | LL | self.hash_expr(&self.cx_mut.body(eid).value); | ---- ^^^^^^^^^^^ - mutable borrow ends here | | | | | immutable borrow occurs here | mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:121:52 | LL | reg.register_static(Box::new(TrivialPass::new(®.sess_mut))); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:125:51 | LL | reg.register_bound(Box::new(TrivialPass::new(®.sess_mut))); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:129:50 | LL | reg.register_univ(Box::new(TrivialPass::new(®.sess_mut))); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:133:41 | LL | reg.register_ref(&TrivialPass::new(®.sess_mut)); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable 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:56 | LL | reg.register_static(Box::new(TrivialPass::new(&mut reg.sess_mut))); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second 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:59 | LL | reg.register_bound(Box::new(TrivialPass::new_mut(&mut reg.sess_mut))); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second 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:58 | LL | reg.register_univ(Box::new(TrivialPass::new_mut(&mut reg.sess_mut))); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second 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:49 | LL | reg.register_ref(&TrivialPass::new_mut(&mut reg.sess_mut)); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second mutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:168:51 | LL | reg.register_bound(Box::new(CapturePass::new(®.sess_mut))); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:173:50 | LL | reg.register_univ(Box::new(CapturePass::new(®.sess_mut))); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable borrow occurs here error[E0502]: cannot borrow `reg.sess_mut` as immutable because `*reg` is also borrowed as mutable --> $DIR/two-phase-surprise-no-conflict.rs:178:41 | LL | reg.register_ref(&CapturePass::new(®.sess_mut)); | --- ^^^^^^^^^^^^ - mutable borrow ends here | | | | mutable borrow occurs here immutable 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:59 | LL | reg.register_bound(Box::new(CapturePass::new_mut(&mut reg.sess_mut))); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second 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:58 | LL | reg.register_univ(Box::new(CapturePass::new_mut(&mut reg.sess_mut))); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second 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:49 | LL | reg.register_ref(&CapturePass::new_mut(&mut reg.sess_mut)); | --- ^^^^^^^^^^^^ - first borrow ends here | | | | first mutable borrow occurs here second mutable borrow occurs here error: aborting due to 16 previous errors Some errors occurred: E0499, E0502, E0503. For more information about an error, try `rustc --explain E0499`.