self.consume_expr(&**input);
}
- for &(_, ref output, is_rw) in &ia.outputs {
- self.mutate_expr(expr, &**output,
- if is_rw { WriteAndRead } else { JustWrite });
+ for output in &ia.outputs {
+ if output.is_indirect {
+ self.consume_expr(&*output.expr);
+ } else {
+ self.mutate_expr(expr, &*output.expr,
+ if output.is_rw { WriteAndRead } else { JustWrite });
+ }
}
}
debug!("walk_block(blk.id={})", blk.id);
for stmt in &blk.stmts {
- self.walk_stmt(&**stmt);
+ self.walk_stmt(stmt);
}
if let Some(ref tail_expr) = blk.expr {
return_if_err!(self.mc.cat_pattern(cmt_discr, pat, |_mc, cmt_pat, pat| {
let tcx = self.tcx();
let def_map = &self.tcx().def_map;
- if pat_util::pat_is_binding(def_map, pat) {
+ if pat_util::pat_is_binding(&def_map.borrow(), pat) {
match pat.node {
hir::PatIdent(hir::BindByRef(_), _, _) =>
mode.lub(BorrowingMatch),
let def_map = &self.tcx().def_map;
let delegate = &mut self.delegate;
return_if_err!(mc.cat_pattern(cmt_discr.clone(), pat, |mc, cmt_pat, pat| {
- if pat_util::pat_is_binding(def_map, pat) {
+ if pat_util::pat_is_binding(&def_map.borrow(), pat) {
let tcx = typer.tcx;
debug!("binding cmt_pat={:?} pat={:?} match_mode={:?}",