@@ -282,9 +282,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
282
282
ExprKind :: Field ( el, ident) => {
283
283
hir:: ExprKind :: Field ( self . lower_expr ( el) , self . lower_ident ( * ident) )
284
284
}
285
- ExprKind :: Index ( el, er, brackets_span) => {
286
- hir:: ExprKind :: Index ( self . lower_expr ( el) , self . lower_expr ( er) , * brackets_span)
287
- }
285
+ ExprKind :: Index ( el, er, brackets_span) => hir:: ExprKind :: Index (
286
+ self . lower_expr ( el) ,
287
+ self . lower_expr ( er) ,
288
+ self . lower_span ( * brackets_span) ,
289
+ ) ,
288
290
ExprKind :: Range ( e1, e2, lims) => {
289
291
self . lower_expr_range ( e. span , e1. as_deref ( ) , e2. as_deref ( ) , * lims)
290
292
}
@@ -334,7 +336,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
334
336
ExprKind :: Struct ( se) => {
335
337
let rest = match & se. rest {
336
338
StructRest :: Base ( e) => hir:: StructTailExpr :: Base ( self . lower_expr ( e) ) ,
337
- StructRest :: Rest ( sp) => hir:: StructTailExpr :: DefaultFields ( * sp) ,
339
+ StructRest :: Rest ( sp) => {
340
+ hir:: StructTailExpr :: DefaultFields ( self . lower_span ( * sp) )
341
+ }
338
342
StructRest :: None => hir:: StructTailExpr :: None ,
339
343
} ;
340
344
hir:: ExprKind :: Struct (
@@ -678,6 +682,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
678
682
hir:: Arm { hir_id, pat, guard, body, span }
679
683
}
680
684
685
+ fn lower_capture_clause ( & mut self , capture_clause : CaptureBy ) -> CaptureBy {
686
+ match capture_clause {
687
+ CaptureBy :: Ref => CaptureBy :: Ref ,
688
+ CaptureBy :: Use { use_kw } => CaptureBy :: Use { use_kw : self . lower_span ( use_kw) } ,
689
+ CaptureBy :: Value { move_kw } => CaptureBy :: Value { move_kw : self . lower_span ( move_kw) } ,
690
+ }
691
+ }
692
+
681
693
/// Lower/desugar a coroutine construct.
682
694
///
683
695
/// In particular, this creates the correct async resume argument and `_task_context`.
@@ -769,7 +781,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
769
781
hir:: ExprKind :: Closure ( self . arena . alloc ( hir:: Closure {
770
782
def_id : closure_def_id,
771
783
binder : hir:: ClosureBinder :: Default ,
772
- capture_clause,
784
+ capture_clause : self . lower_capture_clause ( capture_clause ) ,
773
785
bound_generic_params : & [ ] ,
774
786
fn_decl,
775
787
body,
@@ -1035,7 +1047,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1035
1047
}
1036
1048
1037
1049
fn lower_expr_use ( & mut self , use_kw_span : Span , expr : & Expr ) -> hir:: ExprKind < ' hir > {
1038
- hir:: ExprKind :: Use ( self . lower_expr ( expr) , use_kw_span)
1050
+ hir:: ExprKind :: Use ( self . lower_expr ( expr) , self . lower_span ( use_kw_span) )
1039
1051
}
1040
1052
1041
1053
fn lower_expr_closure (
@@ -1083,7 +1095,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1083
1095
let c = self . arena . alloc ( hir:: Closure {
1084
1096
def_id : closure_def_id,
1085
1097
binder : binder_clause,
1086
- capture_clause,
1098
+ capture_clause : self . lower_capture_clause ( capture_clause ) ,
1087
1099
bound_generic_params,
1088
1100
fn_decl,
1089
1101
body : body_id,
@@ -1197,7 +1209,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1197
1209
let c = self . arena . alloc ( hir:: Closure {
1198
1210
def_id : closure_def_id,
1199
1211
binder : binder_clause,
1200
- capture_clause,
1212
+ capture_clause : self . lower_capture_clause ( capture_clause ) ,
1201
1213
bound_generic_params,
1202
1214
fn_decl,
1203
1215
body,
@@ -2101,7 +2113,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
2101
2113
2102
2114
fn expr_uint ( & mut self , sp : Span , ty : ast:: UintTy , value : u128 ) -> hir:: Expr < ' hir > {
2103
2115
let lit = hir:: Lit {
2104
- span : sp ,
2116
+ span : self . lower_span ( sp ) ,
2105
2117
node : ast:: LitKind :: Int ( value. into ( ) , ast:: LitIntType :: Unsigned ( ty) ) ,
2106
2118
} ;
2107
2119
self . expr ( sp, hir:: ExprKind :: Lit ( lit) )
@@ -2120,7 +2132,10 @@ impl<'hir> LoweringContext<'_, 'hir> {
2120
2132
}
2121
2133
2122
2134
pub ( super ) fn expr_str ( & mut self , sp : Span , value : Symbol ) -> hir:: Expr < ' hir > {
2123
- let lit = hir:: Lit { span : sp, node : ast:: LitKind :: Str ( value, ast:: StrStyle :: Cooked ) } ;
2135
+ let lit = hir:: Lit {
2136
+ span : self . lower_span ( sp) ,
2137
+ node : ast:: LitKind :: Str ( value, ast:: StrStyle :: Cooked ) ,
2138
+ } ;
2124
2139
self . expr ( sp, hir:: ExprKind :: Lit ( lit) )
2125
2140
}
2126
2141
@@ -2206,7 +2221,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
2206
2221
self . arena . alloc ( hir:: Path {
2207
2222
span : self . lower_span ( span) ,
2208
2223
res,
2209
- segments : arena_vec ! [ self ; hir:: PathSegment :: new( ident, hir_id, res) ] ,
2224
+ segments : arena_vec ! [ self ; hir:: PathSegment :: new( self . lower_ident ( ident) , hir_id, res) ] ,
2210
2225
} ) ,
2211
2226
) ) ;
2212
2227
0 commit comments