diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-23 11:28:20 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-23 12:10:19 -0700 |
| commit | 087cbb55d06d833033e463b9c3a4237c04264319 (patch) | |
| tree | 3f7f21846979bbd2a3d19930e58aee3699d97c21 /src/libsyntax/parse/parser.rs | |
| parent | 48c8d1fecd55098e87cdb9c027c2675a22df370f (diff) | |
| download | rust-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.rs | 34 |
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; } |
