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) {
|
||||
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);
|
||||
|
|
|
@ -376,7 +376,9 @@ fn build_closure(bcx0: block,
|
|||
env_vals += [env_move(lv.val, ty, lv.kind)];
|
||||
}
|
||||
capture::cap_drop {
|
||||
assert lv.kind == owned;
|
||||
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