Skip to content

Commit d0dc41a

Browse files
committed
Address review comments
1 parent 3f39dc1 commit d0dc41a

File tree

1 file changed

+45
-48
lines changed

1 file changed

+45
-48
lines changed

src/libsyntax/parse/parser.rs

+45-48
Original file line numberDiff line numberDiff line change
@@ -4324,52 +4324,49 @@ impl<'a> Parser<'a> {
43244324
fn eat_macro_def(&mut self, attrs: &[Attribute], vis: &Visibility, lo: Span)
43254325
-> PResult<'a, Option<P<Item>>> {
43264326
let token_lo = self.token.span;
4327-
let (ident, def) = match self.token.kind {
4328-
token::Ident(name, false) if name == kw::Macro => {
4329-
self.bump();
4330-
let ident = self.parse_ident()?;
4331-
let tokens = if self.check(&token::OpenDelim(token::Brace)) {
4332-
match self.parse_token_tree() {
4333-
TokenTree::Delimited(_, _, tts) => tts,
4334-
_ => unreachable!(),
4335-
}
4336-
} else if self.check(&token::OpenDelim(token::Paren)) {
4337-
let args = self.parse_token_tree();
4338-
let body = if self.check(&token::OpenDelim(token::Brace)) {
4339-
self.parse_token_tree()
4340-
} else {
4341-
self.unexpected()?;
4342-
unreachable!()
4343-
};
4344-
TokenStream::new(vec![
4345-
args.into(),
4346-
TokenTree::token(token::FatArrow, token_lo.to(self.prev_span)).into(),
4347-
body.into(),
4348-
])
4327+
let (ident, def) = if self.eat_keyword(kw::Macro) {
4328+
let ident = self.parse_ident()?;
4329+
let tokens = if self.check(&token::OpenDelim(token::Brace)) {
4330+
match self.parse_token_tree() {
4331+
TokenTree::Delimited(_, _, tts) => tts,
4332+
_ => unreachable!(),
4333+
}
4334+
} else if self.check(&token::OpenDelim(token::Paren)) {
4335+
let args = self.parse_token_tree();
4336+
let body = if self.check(&token::OpenDelim(token::Brace)) {
4337+
self.parse_token_tree()
43494338
} else {
43504339
self.unexpected()?;
43514340
unreachable!()
43524341
};
4342+
TokenStream::new(vec![
4343+
args.into(),
4344+
TokenTree::token(token::FatArrow, token_lo.to(self.prev_span)).into(),
4345+
body.into(),
4346+
])
4347+
} else {
4348+
self.unexpected()?;
4349+
unreachable!()
4350+
};
43534351

4354-
(ident, ast::MacroDef { tokens: tokens.into(), legacy: false })
4355-
}
4356-
token::Ident(name, false) if name == sym::macro_rules &&
4357-
self.look_ahead(1, |t| *t == token::Not) &&
4358-
self.look_ahead(2, |t| t.is_ident()) => {
4359-
let prev_span = self.prev_span;
4360-
self.complain_if_pub_macro(&vis.node, prev_span);
4361-
self.bump();
4362-
self.bump();
4363-
4364-
let ident = self.parse_ident()?;
4365-
let (delim, tokens) = self.expect_delimited_token_tree()?;
4366-
if delim != MacDelimiter::Brace && !self.eat(&token::Semi) {
4367-
self.report_invalid_macro_expansion_item();
4368-
}
4352+
(ident, ast::MacroDef { tokens: tokens.into(), legacy: false })
4353+
} else if self.check_keyword(sym::macro_rules) &&
4354+
self.look_ahead(1, |t| *t == token::Not) &&
4355+
self.look_ahead(2, |t| t.is_ident()) {
4356+
let prev_span = self.prev_span;
4357+
self.complain_if_pub_macro(&vis.node, prev_span);
4358+
self.bump();
4359+
self.bump();
43694360

4370-
(ident, ast::MacroDef { tokens, legacy: true })
4361+
let ident = self.parse_ident()?;
4362+
let (delim, tokens) = self.expect_delimited_token_tree()?;
4363+
if delim != MacDelimiter::Brace && !self.eat(&token::Semi) {
4364+
self.report_invalid_macro_expansion_item();
43714365
}
4372-
_ => return Ok(None),
4366+
4367+
(ident, ast::MacroDef { tokens, legacy: true })
4368+
} else {
4369+
return Ok(None);
43734370
};
43744371

43754372
let span = lo.to(self.prev_span);
@@ -4413,14 +4410,14 @@ impl<'a> Parser<'a> {
44134410
!self.is_existential_type_decl() &&
44144411
!self.is_auto_trait_item() &&
44154412
!self.is_async_fn() {
4416-
let pth = self.parse_path(PathStyle::Expr)?;
4413+
let path = self.parse_path(PathStyle::Expr)?;
44174414

44184415
if !self.eat(&token::Not) {
44194416
let expr = if self.check(&token::OpenDelim(token::Brace)) {
4420-
self.parse_struct_expr(lo, pth, ThinVec::new())?
4417+
self.parse_struct_expr(lo, path, ThinVec::new())?
44214418
} else {
44224419
let hi = self.prev_span;
4423-
self.mk_expr(lo.to(hi), ExprKind::Path(None, pth), ThinVec::new())
4420+
self.mk_expr(lo.to(hi), ExprKind::Path(None, path), ThinVec::new())
44244421
};
44254422

44264423
let expr = self.with_res(Restrictions::STMT_EXPR, |this| {
@@ -4444,7 +4441,7 @@ impl<'a> Parser<'a> {
44444441
MacStmtStyle::NoBraces
44454442
};
44464443

4447-
let mac = respan(lo.to(hi), Mac_ { path: pth, tts, delim });
4444+
let mac = respan(lo.to(hi), Mac_ { path, tts, delim });
44484445
let node = if delim == MacDelimiter::Brace ||
44494446
self.token == token::Semi || self.token == token::Eof {
44504447
StmtKind::Mac(P((mac, style, attrs.into())))
@@ -7561,15 +7558,15 @@ impl<'a> Parser<'a> {
75617558
let mac_lo = self.token.span;
75627559

75637560
// item macro.
7564-
let pth = self.parse_path(PathStyle::Mod)?;
7561+
let path = self.parse_path(PathStyle::Mod)?;
75657562
self.expect(&token::Not)?;
75667563
let (delim, tts) = self.expect_delimited_token_tree()?;
75677564
if delim != MacDelimiter::Brace && !self.eat(&token::Semi) {
75687565
self.report_invalid_macro_expansion_item();
75697566
}
75707567

75717568
let hi = self.prev_span;
7572-
let mac = respan(mac_lo.to(hi), Mac_ { path: pth, tts, delim });
7569+
let mac = respan(mac_lo.to(hi), Mac_ { path, tts, delim });
75737570
let item =
75747571
self.mk_item(lo.to(hi), Ident::invalid(), ItemKind::Mac(mac), visibility, attrs);
75757572
return Ok(Some(item));
@@ -7597,9 +7594,9 @@ impl<'a> Parser<'a> {
75977594
!(self.is_async_fn() && self.token.span.rust_2015()) {
75987595
let prev_span = self.prev_span;
75997596
let lo = self.token.span;
7600-
let pth = self.parse_path(PathStyle::Mod)?;
7597+
let path = self.parse_path(PathStyle::Mod)?;
76017598

7602-
if pth.segments.len() == 1 {
7599+
if path.segments.len() == 1 {
76037600
if !self.eat(&token::Not) {
76047601
return Err(self.missing_assoc_item_kind_err(item_kind, prev_span));
76057602
}
@@ -7619,7 +7616,7 @@ impl<'a> Parser<'a> {
76197616
self.expect(&token::Semi)?;
76207617
}
76217618

7622-
Ok(Some(respan(lo.to(self.prev_span), Mac_ { path: pth, tts, delim })))
7619+
Ok(Some(respan(lo.to(self.prev_span), Mac_ { path, tts, delim })))
76237620
} else {
76247621
Ok(None)
76257622
}

0 commit comments

Comments
 (0)