Fix mistake in last use pass

Closes #1243
This commit is contained in:
Marijn Haverbeke 2011-12-01 16:47:07 +01:00
parent f2de42c39a
commit 98ca6d0c61

View file

@ -129,14 +129,21 @@ fn visit_expr(ex: @expr, cx: ctx, v: visit::vt<ctx>) {
} }
expr_call(f, args, _) { expr_call(f, args, _) {
v.visit_expr(f, cx, v); v.visit_expr(f, cx, v);
let i = 0u; let i = 0u, fns = [];
for arg_t in ty::ty_fn_args(cx.tcx, ty::expr_ty(cx.tcx, f)) { let arg_ts = ty::ty_fn_args(cx.tcx, ty::expr_ty(cx.tcx, f));
alt arg_t.mode { for arg in args {
by_mut_ref. { clear_if_path(cx, args[i], v, false); } alt arg.node {
_ { v.visit_expr(args[i], cx, v); } expr_fn(_) { fns += [arg]; }
_ {
alt arg_ts[i].mode {
by_mut_ref. { clear_if_path(cx, arg, v, false); }
_ { v.visit_expr(arg, cx, v); }
}
}
} }
i += 1u; i += 1u;
} }
for f in fns { v.visit_expr(f, cx, v); }
} }
_ { visit::visit_expr(ex, cx, v); } _ { visit::visit_expr(ex, cx, v); }
} }