@@ -72,7 +72,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
72
72
let kind = match & e. kind {
73
73
ExprKind :: Array ( exprs) => hir:: ExprKind :: Array ( self . lower_exprs ( exprs) ) ,
74
74
ExprKind :: ConstBlock ( c) => {
75
- let c = self . with_new_scopes ( |this| hir:: ConstBlock {
75
+ let c = self . with_new_scopes ( c . value . span , |this| hir:: ConstBlock {
76
76
def_id : this. local_def_id ( c. id ) ,
77
77
hir_id : this. lower_node_id ( c. id ) ,
78
78
body : this. lower_const_body ( c. value . span , Some ( & c. value ) ) ,
@@ -189,7 +189,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
189
189
None ,
190
190
e. span ,
191
191
hir:: CoroutineSource :: Block ,
192
- |this| this. with_new_scopes ( |this| this. lower_block_expr ( block) ) ,
192
+ |this| this. with_new_scopes ( e . span , |this| this. lower_block_expr ( block) ) ,
193
193
) ,
194
194
ExprKind :: Await ( expr, await_kw_span) => self . lower_expr_await ( * await_kw_span, expr) ,
195
195
ExprKind :: Closure ( box Closure {
@@ -323,7 +323,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
323
323
None ,
324
324
e. span ,
325
325
hir:: CoroutineSource :: Block ,
326
- |this| this. with_new_scopes ( |this| this. lower_block_expr ( block) ) ,
326
+ |this| this. with_new_scopes ( e . span , |this| this. lower_block_expr ( block) ) ,
327
327
) ,
328
328
ExprKind :: Yield ( opt_expr) => self . lower_expr_yield ( e. span , opt_expr. as_deref ( ) ) ,
329
329
ExprKind :: Err => hir:: ExprKind :: Err (
@@ -941,9 +941,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
941
941
) -> hir:: ExprKind < ' hir > {
942
942
let ( binder_clause, generic_params) = self . lower_closure_binder ( binder) ;
943
943
944
- let ( body_id, coroutine_option) = self . with_new_scopes ( move |this| {
945
- let prev = this. current_item ;
946
- this. current_item = Some ( fn_decl_span) ;
944
+ let ( body_id, coroutine_option) = self . with_new_scopes ( fn_decl_span, move |this| {
947
945
let mut coroutine_kind = None ;
948
946
let body_id = this. lower_fn_body ( decl, |this| {
949
947
let e = this. lower_expr_mut ( body) ;
@@ -952,7 +950,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
952
950
} ) ;
953
951
let coroutine_option =
954
952
this. coroutine_movability_for_fn ( decl, fn_decl_span, coroutine_kind, movability) ;
955
- this. current_item = prev;
956
953
( body_id, coroutine_option)
957
954
} ) ;
958
955
@@ -1038,7 +1035,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1038
1035
let outer_decl =
1039
1036
FnDecl { inputs : decl. inputs . clone ( ) , output : FnRetTy :: Default ( fn_decl_span) } ;
1040
1037
1041
- let body = self . with_new_scopes ( |this| {
1038
+ let body = self . with_new_scopes ( fn_decl_span , |this| {
1042
1039
// FIXME(cramertj): allow `async` non-`move` closures with arguments.
1043
1040
if capture_clause == CaptureBy :: Ref && !decl. inputs . is_empty ( ) {
1044
1041
this. tcx . sess . emit_err ( AsyncNonMoveClosureNotSupported { fn_decl_span } ) ;
@@ -1060,7 +1057,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1060
1057
async_ret_ty,
1061
1058
body. span ,
1062
1059
hir:: CoroutineSource :: Closure ,
1063
- |this| this. with_new_scopes ( |this| this. lower_expr_mut ( body) ) ,
1060
+ |this| this. with_new_scopes ( fn_decl_span , |this| this. lower_expr_mut ( body) ) ,
1064
1061
) ;
1065
1062
let hir_id = this. lower_node_id ( inner_closure_id) ;
1066
1063
this. maybe_forward_track_caller ( body. span , closure_hir_id, hir_id) ;
@@ -1500,7 +1497,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
1500
1497
match self . coroutine_kind {
1501
1498
Some ( hir:: CoroutineKind :: Gen ( _) ) => { }
1502
1499
Some ( hir:: CoroutineKind :: Async ( _) ) => {
1503
- return hir:: ExprKind :: Err ( self . tcx . sess . emit_err ( AsyncCoroutinesNotSupported { span } ) ) ;
1500
+ return hir:: ExprKind :: Err (
1501
+ self . tcx . sess . emit_err ( AsyncCoroutinesNotSupported { span } ) ,
1502
+ ) ;
1504
1503
}
1505
1504
Some ( hir:: CoroutineKind :: Coroutine ) | None => {
1506
1505
if !self . tcx . features ( ) . coroutines {
0 commit comments