@@ -1415,7 +1415,12 @@ impl<'a> Parser<'a> {
14151415 if self . eat ( & token:: Not ) {
14161416 // Macro invocation in type position
14171417 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
1418- let node = Mac_ { path, tts, delim } ;
1418+ let node = Mac_ {
1419+ path,
1420+ tts,
1421+ delim,
1422+ prior_type_ascription : self . last_type_ascription ,
1423+ } ;
14191424 TyKind :: Mac ( respan ( lo. to ( self . prev_span ) , node) )
14201425 } else {
14211426 // Just a type path or bound list (trait object type) starting with a trait.
@@ -2246,7 +2251,12 @@ impl<'a> Parser<'a> {
22462251 // MACRO INVOCATION expression
22472252 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
22482253 hi = self . prev_span ;
2249- ex = ExprKind :: Mac ( respan ( lo. to ( hi) , Mac_ { path, tts, delim } ) ) ;
2254+ ex = ExprKind :: Mac ( respan ( lo. to ( hi) , Mac_ {
2255+ path,
2256+ tts,
2257+ delim,
2258+ prior_type_ascription : self . last_type_ascription ,
2259+ } ) ) ;
22502260 } else if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
22512261 if let Some ( expr) = self . maybe_parse_struct_expr ( lo, & path, & attrs) {
22522262 return expr;
@@ -3963,7 +3973,12 @@ impl<'a> Parser<'a> {
39633973 // Parse macro invocation
39643974 self . bump ( ) ;
39653975 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
3966- let mac = respan ( lo. to ( self . prev_span ) , Mac_ { path, tts, delim } ) ;
3976+ let mac = respan ( lo. to ( self . prev_span ) , Mac_ {
3977+ path,
3978+ tts,
3979+ delim,
3980+ prior_type_ascription : self . last_type_ascription ,
3981+ } ) ;
39673982 pat = PatKind :: Mac ( mac) ;
39683983 }
39693984 token:: DotDotDot | token:: DotDotEq | token:: DotDot => {
@@ -4403,7 +4418,12 @@ impl<'a> Parser<'a> {
44034418 MacStmtStyle :: NoBraces
44044419 } ;
44054420
4406- let mac = respan ( lo. to ( hi) , Mac_ { path, tts, delim } ) ;
4421+ let mac = respan ( lo. to ( hi) , Mac_ {
4422+ path,
4423+ tts,
4424+ delim,
4425+ prior_type_ascription : self . last_type_ascription ,
4426+ } ) ;
44074427 let node = if delim == MacDelimiter :: Brace ||
44084428 self . token == token:: Semi || self . token == token:: Eof {
44094429 StmtKind :: Mac ( P ( ( mac, style, attrs. into ( ) ) ) )
@@ -7518,7 +7538,12 @@ impl<'a> Parser<'a> {
75187538 }
75197539
75207540 let hi = self . prev_span ;
7521- let mac = respan ( mac_lo. to ( hi) , Mac_ { path, tts, delim } ) ;
7541+ let mac = respan ( mac_lo. to ( hi) , Mac_ {
7542+ path,
7543+ tts,
7544+ delim,
7545+ prior_type_ascription : self . last_type_ascription ,
7546+ } ) ;
75227547 let item =
75237548 self . mk_item ( lo. to ( hi) , Ident :: invalid ( ) , ItemKind :: Mac ( mac) , visibility, attrs) ;
75247549 return Ok ( Some ( item) ) ;
@@ -7568,7 +7593,12 @@ impl<'a> Parser<'a> {
75687593 self . expect ( & token:: Semi ) ?;
75697594 }
75707595
7571- Ok ( Some ( respan ( lo. to ( self . prev_span ) , Mac_ { path, tts, delim } ) ) )
7596+ Ok ( Some ( respan ( lo. to ( self . prev_span ) , Mac_ {
7597+ path,
7598+ tts,
7599+ delim,
7600+ prior_type_ascription : self . last_type_ascription ,
7601+ } ) ) )
75727602 } else {
75737603 Ok ( None )
75747604 }
0 commit comments