@@ -1414,7 +1414,12 @@ impl<'a> Parser<'a> {
14141414 if self . eat ( & token:: Not ) {
14151415 // Macro invocation in type position
14161416 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
1417- let node = Mac_ { path, tts, delim } ;
1417+ let node = Mac_ {
1418+ path,
1419+ tts,
1420+ delim,
1421+ prior_type_ascription : self . last_type_ascription ,
1422+ } ;
14181423 TyKind :: Mac ( respan ( lo. to ( self . prev_span ) , node) )
14191424 } else {
14201425 // Just a type path or bound list (trait object type) starting with a trait.
@@ -2245,7 +2250,12 @@ impl<'a> Parser<'a> {
22452250 // MACRO INVOCATION expression
22462251 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
22472252 hi = self . prev_span ;
2248- ex = ExprKind :: Mac ( respan ( lo. to ( hi) , Mac_ { path, tts, delim } ) ) ;
2253+ ex = ExprKind :: Mac ( respan ( lo. to ( hi) , Mac_ {
2254+ path,
2255+ tts,
2256+ delim,
2257+ prior_type_ascription : self . last_type_ascription ,
2258+ } ) ) ;
22492259 } else if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
22502260 if let Some ( expr) = self . maybe_parse_struct_expr ( lo, & path, & attrs) {
22512261 return expr;
@@ -3971,7 +3981,12 @@ impl<'a> Parser<'a> {
39713981 // Parse macro invocation
39723982 self . bump ( ) ;
39733983 let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
3974- let mac = respan ( lo. to ( self . prev_span ) , Mac_ { path, tts, delim } ) ;
3984+ let mac = respan ( lo. to ( self . prev_span ) , Mac_ {
3985+ path,
3986+ tts,
3987+ delim,
3988+ prior_type_ascription : self . last_type_ascription ,
3989+ } ) ;
39753990 pat = PatKind :: Mac ( mac) ;
39763991 }
39773992 token:: DotDotDot | token:: DotDotEq | token:: DotDot => {
@@ -4417,7 +4432,12 @@ impl<'a> Parser<'a> {
44174432 MacStmtStyle :: NoBraces
44184433 } ;
44194434
4420- let mac = respan ( lo. to ( hi) , Mac_ { path, tts, delim } ) ;
4435+ let mac = respan ( lo. to ( hi) , Mac_ {
4436+ path,
4437+ tts,
4438+ delim,
4439+ prior_type_ascription : self . last_type_ascription ,
4440+ } ) ;
44214441 let node = if delim == MacDelimiter :: Brace ||
44224442 self . token == token:: Semi || self . token == token:: Eof {
44234443 StmtKind :: Mac ( P ( ( mac, style, attrs. into ( ) ) ) )
@@ -7550,7 +7570,12 @@ impl<'a> Parser<'a> {
75507570 }
75517571
75527572 let hi = self . prev_span ;
7553- let mac = respan ( mac_lo. to ( hi) , Mac_ { path, tts, delim } ) ;
7573+ let mac = respan ( mac_lo. to ( hi) , Mac_ {
7574+ path,
7575+ tts,
7576+ delim,
7577+ prior_type_ascription : self . last_type_ascription ,
7578+ } ) ;
75547579 let item =
75557580 self . mk_item ( lo. to ( hi) , Ident :: invalid ( ) , ItemKind :: Mac ( mac) , visibility, attrs) ;
75567581 return Ok ( Some ( item) ) ;
@@ -7600,7 +7625,12 @@ impl<'a> Parser<'a> {
76007625 self . expect ( & token:: Semi ) ?;
76017626 }
76027627
7603- Ok ( Some ( respan ( lo. to ( self . prev_span ) , Mac_ { path, tts, delim } ) ) )
7628+ Ok ( Some ( respan ( lo. to ( self . prev_span ) , Mac_ {
7629+ path,
7630+ tts,
7631+ delim,
7632+ prior_type_ascription : self . last_type_ascription ,
7633+ } ) ) )
76047634 } else {
76057635 Ok ( None )
76067636 }
0 commit comments