about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-10-23 11:28:20 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-10-23 12:10:19 -0700
commit087cbb55d06d833033e463b9c3a4237c04264319 (patch)
tree3f7f21846979bbd2a3d19930e58aee3699d97c21 /src/libsyntax/parse/parser.rs
parent48c8d1fecd55098e87cdb9c027c2675a22df370f (diff)
downloadrust-087cbb55d06d833033e463b9c3a4237c04264319.tar.gz
rust-087cbb55d06d833033e463b9c3a4237c04264319.zip
Remove <- operator from the compiler
Yield an obsolete syntax error on things like "let foo <- bar;"
and "foo <- bar;" r=brson

Progress on #3466
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 672f86b7a10..6e16e4eec1a 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -20,7 +20,8 @@ use obsolete::{
     ObsoleteLowerCaseKindBounds, ObsoleteLet,
     ObsoleteFieldTerminator, ObsoleteStructCtor,
     ObsoleteWith, ObsoleteClassMethod, ObsoleteClassTraits,
-    ObsoleteModeInFnType, ObsoleteByMutRefMode
+    ObsoleteModeInFnType, ObsoleteByMutRefMode,
+    ObsoleteMoveInit, ObsoleteBinaryMove,
 };
 use ast::{_mod, add, arg, arm, attribute,
              bind_by_ref, bind_by_implicit_ref, bind_by_value, bind_by_move,
@@ -35,11 +36,11 @@ use ast::{_mod, add, arg, arm, attribute,
              expr_call, expr_cast, expr_copy, expr_do_body, expr_fail,
              expr_field, expr_fn, expr_fn_block, expr_if, expr_index,
              expr_lit, expr_log, expr_loop, expr_loop_body, expr_mac,
-             expr_move, expr_path, expr_rec, expr_repeat, expr_ret, expr_swap,
+             expr_path, expr_rec, expr_repeat, expr_ret, expr_swap,
              expr_struct, expr_tup, expr_unary, expr_unary_move, expr_vec,
              expr_vstore, expr_while, extern_fn, field, fn_decl, foreign_item,
              foreign_item_const, foreign_item_fn, foreign_mod, ident,
-             impure_fn, infer, inherited, init_assign, init_move, initializer,
+             impure_fn, infer, inherited,
              item, item_, item_class, item_const, item_enum, item_fn,
              item_foreign_mod, item_impl, item_mac, item_mod, item_trait,
              item_ty, lit, lit_, lit_bool, lit_float, lit_int,
@@ -1473,9 +1474,13 @@ impl Parser {
                                 expr_assign_op(aop, lhs, rhs));
           }
           token::LARROW => {
-            self.bump();
-            let rhs = self.parse_expr();
-            return self.mk_expr(lo, rhs.span.hi, expr_move(lhs, rhs));
+              self.obsolete(copy self.span, ObsoleteBinaryMove);
+              // Bogus value (but it's an error)
+              self.bump(); // <-
+              self.bump(); // rhs
+              self.bump(); // ;
+              return self.mk_expr(lo, self.span.hi,
+                                  expr_break(None));
           }
           token::DARROW => {
             self.bump();
@@ -1745,23 +1750,18 @@ impl Parser {
         return e;
     }
 
-    fn parse_initializer() -> Option<initializer> {
+    fn parse_initializer() -> Option<@expr> {
         match self.token {
           token::EQ => {
             self.bump();
-            return Some({op: init_assign, expr: self.parse_expr()});
+            return Some(self.parse_expr());
           }
           token::LARROW => {
-            self.bump();
-            return Some({op: init_move, expr: self.parse_expr()});
+              self.obsolete(copy self.span, ObsoleteMoveInit);
+              self.bump();
+              self.bump();
+              return None;
           }
-          // Now that the the channel is the first argument to receive,
-          // combining it with an initializer doesn't really make sense.
-          // case (token::RECV) {
-          //     self.bump();
-          //     return Some(rec(op = init_recv,
-          //                  expr = self.parse_expr()));
-          // }
           _ => {
             return None;
           }