From 55fbed3d8d7078bfd3864e64cc044cbe876c5d1a Mon Sep 17 00:00:00 2001 From: Lindsey Kuper Date: Tue, 29 Mar 2011 15:51:53 -0700 Subject: Beginnings of support for magical self prefix; nothing profound happening yet. --- src/comp/front/parser.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/comp/front/parser.rs') diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 7bec44e6..25c9f4a5 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -883,6 +883,20 @@ impure fn parse_bottom_expr(parser p) -> @ast.expr { ex = ast.expr_chan(e, ast.ann_none); } + case (token.SELF) { + p.bump(); + expect(p, token.DOT); + // The rest is a call expression. + auto e = parse_bottom_expr(p); + auto pf = parse_expr; + auto es = parse_seq[@ast.expr](token.LPAREN, + token.RPAREN, + some(token.COMMA), + pf, p); + hi = es.span; + auto ex = ast.expr_call_self(e, es.node, ast.ann_none); + } + case (_) { auto lit = parse_lit(p); hi = lit.span; @@ -1646,6 +1660,7 @@ fn stmt_ends_with_semi(@ast.stmt stmt) -> bool { case (ast.expr_tup(_,_)) { ret true; } case (ast.expr_rec(_,_,_)) { ret true; } case (ast.expr_call(_,_,_)) { ret true; } + case (ast.expr_call_self(_,_,_)){ ret true; } case (ast.expr_binary(_,_,_,_)) { ret true; } case (ast.expr_unary(_,_,_)) { ret true; } case (ast.expr_lit(_,_)) { ret true; } -- cgit v1.2.3