diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-09-05 19:19:37 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-12 20:43:38 -0700 |
| commit | 9abc7f0a1cb5086fa6d9a38841258859a16cbdfe (patch) | |
| tree | 462feec170b952155f0b53ae44295f3cde43b16b | |
| parent | 632d60691a8bd9fb85e3874016d4c1b24657de03 (diff) | |
| download | rust-9abc7f0a1cb5086fa6d9a38841258859a16cbdfe.tar.gz rust-9abc7f0a1cb5086fa6d9a38841258859a16cbdfe.zip | |
(For legacy code:) In liveness, require that by-move arguments are rvalues
| -rw-r--r-- | src/rustc/middle/liveness.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/rustc/middle/liveness.rs b/src/rustc/middle/liveness.rs index 5ead871a661..a0a422bc027 100644 --- a/src/rustc/middle/liveness.rs +++ b/src/rustc/middle/liveness.rs @@ -1461,7 +1461,15 @@ fn check_expr(expr: @expr, &&self: @Liveness, vt: vt<@Liveness>) { match ty::resolved_mode(self.tcx, arg_ty.mode) { by_val | by_copy | by_ref => {} by_move => { - self.check_move_from_expr(*arg_expr, vt); + if ty::expr_is_lval(self.tcx, self.ir.method_map, + *arg_expr) { + // Probably a bad error message (what's an rvalue?) + // but I can't think of anything better + self.tcx.sess.span_err(arg_expr.span, + #fmt("Move mode argument must be an rvalue: try \ + (move %s) instead", expr_to_str(*arg_expr, + self.tcx.sess.intr()))); + } } } } |
