parent
8015e6d52b
commit
1e5266260a
3 changed files with 17 additions and 0 deletions
|
@ -172,6 +172,16 @@ fn visit_expr(cx: @ctx, ex: @expr, &&e: (), v: visit::vt<()>) {
|
||||||
expr_assign(dest, src) | expr_assign_op(_, dest, src) {
|
expr_assign(dest, src) | expr_assign_op(_, dest, src) {
|
||||||
check_lval(cx, dest, msg_assign);
|
check_lval(cx, dest, msg_assign);
|
||||||
}
|
}
|
||||||
|
expr_fn(_, _, _, cap) {
|
||||||
|
for moved in cap.moves {
|
||||||
|
let def = cx.tcx.def_map.get(moved.id);
|
||||||
|
alt is_immutable_def(cx, def) {
|
||||||
|
some(name) { mk_err(cx, moved.span, msg_move_out, moved.name); }
|
||||||
|
_ { }
|
||||||
|
}
|
||||||
|
cx.mutbl_map.insert(ast_util::def_id_of_def(def).node, ());
|
||||||
|
}
|
||||||
|
}
|
||||||
_ { }
|
_ { }
|
||||||
}
|
}
|
||||||
visit::visit_expr(ex, e, v);
|
visit::visit_expr(ex, e, v);
|
||||||
|
|
|
@ -376,7 +376,9 @@ fn build_closure(bcx0: block,
|
||||||
env_vals += [env_move(lv.val, ty, lv.kind)];
|
env_vals += [env_move(lv.val, ty, lv.kind)];
|
||||||
}
|
}
|
||||||
capture::cap_drop {
|
capture::cap_drop {
|
||||||
|
assert lv.kind == owned;
|
||||||
bcx = drop_ty(bcx, lv.val, ty);
|
bcx = drop_ty(bcx, lv.val, ty);
|
||||||
|
bcx = zero_alloca(bcx, lv.val, ty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
5
src/test/run-pass/unused-move-capture.rs
Normal file
5
src/test/run-pass/unused-move-capture.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
fn main() {
|
||||||
|
let x = ~1;
|
||||||
|
let lam_move = fn@[move x]() { };
|
||||||
|
lam_move();
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue