about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-09-05 19:19:37 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-10-12 20:43:38 -0700
commit9abc7f0a1cb5086fa6d9a38841258859a16cbdfe (patch)
tree462feec170b952155f0b53ae44295f3cde43b16b
parent632d60691a8bd9fb85e3874016d4c1b24657de03 (diff)
downloadrust-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.rs10
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())));
+                    }
                 }
             }
         }