@@ -1082,10 +1082,15 @@ impl Parser {
1082
1082
/* `!`, as an operator, is prefix, so we know this isn't that */
1083
1083
if self.token == token::NOT {
1084
1084
self.bump();
1085
- let tts = self.parse_unspanned_seq(
1086
- token::LPAREN, token::RPAREN, seq_sep_none(),
1087
- |p| p.parse_token_tree());
1088
-
1085
+ let tts = match self.token {
1086
+ token::LPAREN | token::LBRACE | token::LBRACKET => {
1087
+ let ket = token::flip_delimiter(self.token);
1088
+ self.parse_unspanned_seq(copy self.token, ket,
1089
+ seq_sep_none(),
1090
+ |p| p.parse_token_tree())
1091
+ }
1092
+ _ => self.fatal(~" expected open delimiter")
1093
+ };
1089
1094
let hi = self.span.hi;
1090
1095
1091
1096
return self.mk_mac_expr(
@@ -3412,9 +3417,15 @@ impl Parser {
3412
3417
let pth = self.parse_path_without_tps();
3413
3418
self.expect(token::NOT);
3414
3419
let id = self.parse_ident();
3415
- let tts = self.parse_unspanned_seq(
3416
- token::LPAREN, token::RPAREN, seq_sep_none(),
3417
- |p| p.parse_token_tree());
3420
+ let tts = match self.token {
3421
+ token::LPAREN | token::LBRACE | token::LBRACKET => {
3422
+ let ket = token::flip_delimiter(self.token);
3423
+ self.parse_unspanned_seq(copy self.token, ket,
3424
+ seq_sep_none(),
3425
+ |p| p.parse_token_tree())
3426
+ }
3427
+ _ => self.fatal(~" expected open delimiter")
3428
+ };
3418
3429
let m = ast::mac_invoc_tt(pth, tts);
3419
3430
let m: ast::mac = {node: m,
3420
3431
span: {lo: self.span.lo,
0 commit comments