@@ -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