diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-11-07 15:16:58 -0800 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-11-13 08:57:31 -0800 |
| commit | f7960ac5494518268626e176481c0644345d2c35 (patch) | |
| tree | 5e76b311952b3da8a3c30627780c443be97165cb /src/libsyntax/parse/parser.rs | |
| parent | 4e1ce014c831974738af62dce4fd699c20a001ff (diff) | |
| download | rust-f7960ac5494518268626e176481c0644345d2c35.tar.gz rust-f7960ac5494518268626e176481c0644345d2c35.zip | |
Revert "`m1!{...}` is now forbidden. Use `m1!(...)` instead."
This reverts commit 89bbaff84fed6e6796c82f5a9fd200e693d47beb.
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index f1f49c63a7d..abf3e9164b1 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1082,10 +1082,15 @@ impl Parser { /* `!`, as an operator, is prefix, so we know this isn't that */ if self.token == token::NOT { self.bump(); - let tts = self.parse_unspanned_seq( - token::LPAREN, token::RPAREN, seq_sep_none(), - |p| p.parse_token_tree()); - + let tts = match self.token { + token::LPAREN | token::LBRACE | token::LBRACKET => { + let ket = token::flip_delimiter(self.token); + self.parse_unspanned_seq(copy self.token, ket, + seq_sep_none(), + |p| p.parse_token_tree()) + } + _ => self.fatal(~"expected open delimiter") + }; let hi = self.span.hi; return self.mk_mac_expr( @@ -3412,9 +3417,15 @@ impl Parser { let pth = self.parse_path_without_tps(); self.expect(token::NOT); let id = self.parse_ident(); - let tts = self.parse_unspanned_seq( - token::LPAREN, token::RPAREN, seq_sep_none(), - |p| p.parse_token_tree()); + let tts = match self.token { + token::LPAREN | token::LBRACE | token::LBRACKET => { + let ket = token::flip_delimiter(self.token); + self.parse_unspanned_seq(copy self.token, ket, + seq_sep_none(), + |p| p.parse_token_tree()) + } + _ => self.fatal(~"expected open delimiter") + }; let m = ast::mac_invoc_tt(pth, tts); let m: ast::mac = {node: m, span: {lo: self.span.lo, |
