@@ -1414,7 +1414,12 @@ impl<'a> Parser<'a> {
1414
1414
if self . eat ( & token:: Not ) {
1415
1415
// Macro invocation in type position
1416
1416
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
+ } ;
1418
1423
TyKind :: Mac ( respan ( lo. to ( self . prev_span ) , node) )
1419
1424
} else {
1420
1425
// Just a type path or bound list (trait object type) starting with a trait.
@@ -2245,7 +2250,12 @@ impl<'a> Parser<'a> {
2245
2250
// MACRO INVOCATION expression
2246
2251
let ( delim, tts) = self . expect_delimited_token_tree ( ) ?;
2247
2252
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
+ } ) ) ;
2249
2259
} else if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
2250
2260
if let Some ( expr) = self . maybe_parse_struct_expr ( lo, & path, & attrs) {
2251
2261
return expr;
@@ -3971,7 +3981,12 @@ impl<'a> Parser<'a> {
3971
3981
// Parse macro invocation
3972
3982
self . bump ( ) ;
3973
3983
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
+ } ) ;
3975
3990
pat = PatKind :: Mac ( mac) ;
3976
3991
}
3977
3992
token:: DotDotDot | token:: DotDotEq | token:: DotDot => {
@@ -4417,7 +4432,12 @@ impl<'a> Parser<'a> {
4417
4432
MacStmtStyle :: NoBraces
4418
4433
} ;
4419
4434
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
+ } ) ;
4421
4441
let node = if delim == MacDelimiter :: Brace ||
4422
4442
self . token == token:: Semi || self . token == token:: Eof {
4423
4443
StmtKind :: Mac ( P ( ( mac, style, attrs. into ( ) ) ) )
@@ -7550,7 +7570,12 @@ impl<'a> Parser<'a> {
7550
7570
}
7551
7571
7552
7572
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
+ } ) ;
7554
7579
let item =
7555
7580
self . mk_item ( lo. to ( hi) , Ident :: invalid ( ) , ItemKind :: Mac ( mac) , visibility, attrs) ;
7556
7581
return Ok ( Some ( item) ) ;
@@ -7600,7 +7625,12 @@ impl<'a> Parser<'a> {
7600
7625
self . expect ( & token:: Semi ) ?;
7601
7626
}
7602
7627
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
+ } ) ) )
7604
7634
} else {
7605
7635
Ok ( None )
7606
7636
}
0 commit comments