about summary refs log tree commit diff
path: root/src/comp/syntax/parse
diff options
context:
space:
mode:
authorPaul Stansifer <paul.stansifer@gmail.com>2011-07-27 17:36:37 -0700
committerPaul Stansifer <paul.stansifer@gmail.com>2011-07-28 12:12:08 -0700
commit86f337484eeabb5e74060d3549974b3bd85e7f3b (patch)
tree0685f587648b05ad133da83132d40fb85411437e /src/comp/syntax/parse
parent3d7016ae9575a36fd96ec264274bbe0c660a7758 (diff)
downloadrust-86f337484eeabb5e74060d3549974b3bd85e7f3b.tar.gz
rust-86f337484eeabb5e74060d3549974b3bd85e7f3b.zip
Change macro syntax to accept a single expr, not a sequence of exprs.
Diffstat (limited to 'src/comp/syntax/parse')
-rw-r--r--src/comp/syntax/parse/parser.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs
index 79728fade13..e24a5127074 100644
--- a/src/comp/syntax/parse/parser.rs
+++ b/src/comp/syntax/parse/parser.rs
@@ -1021,11 +1021,18 @@ fn parse_syntax_ext_naked(p: &parser, lo: uint) -> @ast::expr {
     if ivec::len(pth.node.idents) == 0u {
         p.fatal("expected a syntax expander name");
     }
-    let es =
+    //temporary for a backwards-compatible cycle:
+    let es = if p.peek() == token::LPAREN {
         parse_seq(token::LPAREN, token::RPAREN, some(token::COMMA),
-                  parse_expr, p);
+                  parse_expr, p)
+    } else {
+        parse_seq(token::LBRACKET, token::RBRACKET, some(token::COMMA),
+                  parse_expr, p)
+    };
     let hi = es.span.hi;
-    ret mk_mac_expr(p, lo, hi, ast::mac_invoc(pth, es.node, none));
+    let e = mk_expr(p, es.span.lo, hi,
+                    ast::expr_vec(es.node, ast::imm, ast::sk_rc));
+    ret mk_mac_expr(p, lo, hi, ast::mac_invoc(pth, e, none));
 }
 
 fn parse_self_method(p: &parser) -> @ast::expr {