@@ -1415,7 +1415,12 @@ impl<'a> Parser<'a> {
1415
1415
if self . eat ( & token:: Not ) {
1416
1416
// Macro invocation in type position
1417
1417
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
+ } ;
1419
1424
TyKind :: Mac ( respan ( lo. to ( self . prev_span ) , node) )
1420
1425
} else {
1421
1426
// Just a type path or bound list (trait object type) starting with a trait.
@@ -2246,7 +2251,12 @@ impl<'a> Parser<'a> {
2246
2251
// MACRO INVOCATION expression
2247
2252
let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
2248
2253
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
+ } ) ) ;
2250
2260
} else if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
2251
2261
if let Some ( expr) = self . maybe_parse_struct_expr ( lo, & path, & attrs) {
2252
2262
return expr;
@@ -3963,7 +3973,12 @@ impl<'a> Parser<'a> {
3963
3973
// Parse macro invocation
3964
3974
self . bump ( ) ;
3965
3975
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
+ } ) ;
3967
3982
pat = PatKind :: Mac ( mac) ;
3968
3983
}
3969
3984
token:: DotDotDot | token:: DotDotEq | token:: DotDot => {
@@ -4403,7 +4418,12 @@ impl<'a> Parser<'a> {
4403
4418
MacStmtStyle :: NoBraces
4404
4419
} ;
4405
4420
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
+ } ) ;
4407
4427
let node = if delim == MacDelimiter :: Brace ||
4408
4428
self . token == token:: Semi || self . token == token:: Eof {
4409
4429
StmtKind :: Mac ( P ( ( mac, style, attrs. into ( ) ) ) )
@@ -7518,7 +7538,12 @@ impl<'a> Parser<'a> {
7518
7538
}
7519
7539
7520
7540
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
+ } ) ;
7522
7547
let item =
7523
7548
self . mk_item ( lo. to ( hi) , Ident :: invalid ( ) , ItemKind :: Mac ( mac) , visibility, attrs) ;
7524
7549
return Ok ( Some ( item) ) ;
@@ -7568,7 +7593,12 @@ impl<'a> Parser<'a> {
7568
7593
self . expect ( & token:: Semi ) ?;
7569
7594
}
7570
7595
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
+ } ) ) )
7572
7602
} else {
7573
7603
Ok ( None )
7574
7604
}
0 commit comments