@@ -1207,16 +1207,14 @@ impl<'a> Parser<'a> {
12071207 // eat a matched-delimiter token tree:
12081208 let delim = self . expect_open_delim ( ) ?;
12091209 let tts = self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
1210- SeqSep :: none ( ) ,
1211- |pp| pp. parse_token_tree ( ) ) ?;
1212- let m_ = Mac_ { path : pth, tts : tts } ;
1213- let m: ast:: Mac = codemap:: Spanned { node : m_,
1214- span : mk_sp ( lo,
1215- self . last_span . hi ) } ;
1210+ SeqSep :: none ( ) ,
1211+ |pp| pp. parse_token_tree ( ) ) ?;
12161212 if delim != token:: Brace {
12171213 self . expect ( & token:: Semi ) ?
12181214 }
1219- ( keywords:: Invalid . ident ( ) , ast:: TraitItemKind :: Macro ( m) )
1215+
1216+ let mac = spanned ( lo, self . last_span . hi , Mac_ { path : pth, tts : tts } ) ;
1217+ ( keywords:: Invalid . ident ( ) , ast:: TraitItemKind :: Macro ( mac) )
12201218 } else {
12211219 let ( constness, unsafety, abi) = match self . parse_fn_front_matter ( ) {
12221220 Ok ( cua) => cua,
@@ -1422,9 +1420,8 @@ impl<'a> Parser<'a> {
14221420 TyKind :: Path ( Some ( qself) , path)
14231421 } else if self . token . is_path_start ( ) {
14241422 let path = self . parse_path ( PathStyle :: Type ) ?;
1425- if self . check ( & token:: Not ) {
1423+ if self . eat ( & token:: Not ) {
14261424 // MACRO INVOCATION
1427- self . bump ( ) ;
14281425 let delim = self . expect_open_delim ( ) ?;
14291426 let tts = self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
14301427 SeqSep :: none ( ) ,
@@ -2302,21 +2299,14 @@ impl<'a> Parser<'a> {
23022299 let pth = self . parse_path ( PathStyle :: Expr ) ?;
23032300
23042301 // `!`, as an operator, is prefix, so we know this isn't that
2305- if self . check ( & token:: Not ) {
2302+ if self . eat ( & token:: Not ) {
23062303 // MACRO INVOCATION expression
2307- self . bump ( ) ;
2308-
23092304 let delim = self . expect_open_delim ( ) ?;
2310- let tts = self . parse_seq_to_end (
2311- & token:: CloseDelim ( delim) ,
2312- SeqSep :: none ( ) ,
2313- |p| p. parse_token_tree ( ) ) ?;
2305+ let tts = self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
2306+ SeqSep :: none ( ) ,
2307+ |p| p. parse_token_tree ( ) ) ?;
23142308 let hi = self . last_span . hi ;
2315-
2316- return Ok ( self . mk_mac_expr ( lo,
2317- hi,
2318- Mac_ { path : pth, tts : tts } ,
2319- attrs) ) ;
2309+ return Ok ( self . mk_mac_expr ( lo, hi, Mac_ { path : pth, tts : tts } , attrs) ) ;
23202310 }
23212311 if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
23222312 // This is a struct literal, unless we're prohibited
@@ -4880,14 +4870,12 @@ impl<'a> Parser<'a> {
48804870 let tts = self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
48814871 SeqSep :: none ( ) ,
48824872 |p| p. parse_token_tree ( ) ) ?;
4883- let m_ = Mac_ { path : pth, tts : tts } ;
4884- let m: ast:: Mac = codemap:: Spanned { node : m_,
4885- span : mk_sp ( lo,
4886- self . last_span . hi ) } ;
48874873 if delim != token:: Brace {
48884874 self . expect ( & token:: Semi ) ?
48894875 }
4890- Ok ( ( keywords:: Invalid . ident ( ) , vec ! [ ] , ast:: ImplItemKind :: Macro ( m) ) )
4876+
4877+ let mac = spanned ( lo, self . last_span . hi , Mac_ { path : pth, tts : tts } ) ;
4878+ Ok ( ( keywords:: Invalid . ident ( ) , vec ! [ ] , ast:: ImplItemKind :: Macro ( mac) ) )
48914879 } else {
48924880 let ( constness, unsafety, abi) = self . parse_fn_front_matter ( ) ?;
48934881 let ident = self . parse_ident ( ) ?;
@@ -6009,12 +5997,6 @@ impl<'a> Parser<'a> {
60095997 let tts = self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
60105998 SeqSep :: none ( ) ,
60115999 |p| p. parse_token_tree ( ) ) ?;
6012- // single-variant-enum... :
6013- let m = Mac_ { path : pth, tts : tts } ;
6014- let m: ast:: Mac = codemap:: Spanned { node : m,
6015- span : mk_sp ( mac_lo,
6016- self . last_span . hi ) } ;
6017-
60186000 if delim != token:: Brace {
60196001 if !self . eat ( & token:: Semi ) {
60206002 let last_span = self . last_span ;
@@ -6025,14 +6007,9 @@ impl<'a> Parser<'a> {
60256007 }
60266008 }
60276009
6028- let item_ = ItemKind :: Mac ( m) ;
6029- let last_span = self . last_span ;
6030- let item = self . mk_item ( lo,
6031- last_span. hi ,
6032- id,
6033- item_,
6034- visibility,
6035- attrs) ;
6010+ let hi = self . last_span . hi ;
6011+ let mac = spanned ( mac_lo, hi, Mac_ { path : pth, tts : tts } ) ;
6012+ let item = self . mk_item ( lo, hi, id, ItemKind :: Mac ( mac) , visibility, attrs) ;
60366013 return Ok ( Some ( item) ) ;
60376014 }
60386015
0 commit comments