@@ -261,7 +261,7 @@ impl TransformVisitor<'tcx> {
261
261
262
262
let self_place = Place :: from ( SELF_ARG ) ;
263
263
let assign = Statement {
264
- source_info : source_info ( body) ,
264
+ source_info : SourceInfo :: outermost ( body. span ) ,
265
265
kind : StatementKind :: Assign ( box ( temp, Rvalue :: Discriminant ( self_place) ) ) ,
266
266
} ;
267
267
( assign, temp)
@@ -395,7 +395,7 @@ fn replace_local<'tcx>(
395
395
body : & mut Body < ' tcx > ,
396
396
tcx : TyCtxt < ' tcx > ,
397
397
) -> Local {
398
- let source_info = source_info ( body) ;
398
+ let source_info = SourceInfo :: outermost ( body. span ) ;
399
399
let new_decl = LocalDecl {
400
400
mutability : Mutability :: Mut ,
401
401
ty,
@@ -784,7 +784,7 @@ fn insert_switch<'tcx>(
784
784
targets : cases. iter ( ) . map ( |& ( _, d) | d) . chain ( iter:: once ( default_block) ) . collect ( ) ,
785
785
} ;
786
786
787
- let source_info = source_info ( body) ;
787
+ let source_info = SourceInfo :: outermost ( body. span ) ;
788
788
body. basic_blocks_mut ( ) . raw . insert (
789
789
0 ,
790
790
BasicBlockData {
@@ -858,7 +858,7 @@ fn create_generator_drop_shim<'tcx>(
858
858
let mut body = body. clone ( ) ;
859
859
body. arg_count = 1 ; // make sure the resume argument is not included here
860
860
861
- let source_info = source_info ( & body) ;
861
+ let source_info = SourceInfo :: outermost ( body. span ) ;
862
862
863
863
let mut cases = create_cases ( & mut body, transform, Operation :: Drop ) ;
864
864
@@ -922,7 +922,7 @@ fn create_generator_drop_shim<'tcx>(
922
922
}
923
923
924
924
fn insert_term_block < ' tcx > ( body : & mut Body < ' tcx > , kind : TerminatorKind < ' tcx > ) -> BasicBlock {
925
- let source_info = source_info ( body) ;
925
+ let source_info = SourceInfo :: outermost ( body. span ) ;
926
926
body. basic_blocks_mut ( ) . push ( BasicBlockData {
927
927
statements : Vec :: new ( ) ,
928
928
terminator : Some ( Terminator { source_info, kind } ) ,
@@ -948,7 +948,7 @@ fn insert_panic_block<'tcx>(
948
948
cleanup : None ,
949
949
} ;
950
950
951
- let source_info = source_info ( body) ;
951
+ let source_info = SourceInfo :: outermost ( body. span ) ;
952
952
body. basic_blocks_mut ( ) . push ( BasicBlockData {
953
953
statements : Vec :: new ( ) ,
954
954
terminator : Some ( Terminator { source_info, kind : term } ) ,
@@ -1025,7 +1025,7 @@ fn create_generator_resume_function<'tcx>(
1025
1025
1026
1026
// Poison the generator when it unwinds
1027
1027
if can_unwind {
1028
- let source_info = source_info ( body) ;
1028
+ let source_info = SourceInfo :: outermost ( body. span ) ;
1029
1029
let poison_block = body. basic_blocks_mut ( ) . push ( BasicBlockData {
1030
1030
statements : vec ! [ transform. set_discr( VariantIdx :: new( POISONED ) , source_info) ] ,
1031
1031
terminator : Some ( Terminator { source_info, kind : TerminatorKind :: Resume } ) ,
@@ -1092,10 +1092,6 @@ fn create_generator_resume_function<'tcx>(
1092
1092
dump_mir ( tcx, None , "generator_resume" , & 0 , source, body, |_, _| Ok ( ( ) ) ) ;
1093
1093
}
1094
1094
1095
- fn source_info ( body : & Body < ' _ > ) -> SourceInfo {
1096
- SourceInfo { span : body. span , scope : OUTERMOST_SOURCE_SCOPE }
1097
- }
1098
-
1099
1095
fn insert_clean_drop ( body : & mut Body < ' _ > ) -> BasicBlock {
1100
1096
let return_block = insert_term_block ( body, TerminatorKind :: Return ) ;
1101
1097
@@ -1104,7 +1100,7 @@ fn insert_clean_drop(body: &mut Body<'_>) -> BasicBlock {
1104
1100
target : return_block,
1105
1101
unwind : None ,
1106
1102
} ;
1107
- let source_info = source_info ( body) ;
1103
+ let source_info = SourceInfo :: outermost ( body. span ) ;
1108
1104
1109
1105
// Create a block to destroy an unresumed generators. This can only destroy upvars.
1110
1106
body. basic_blocks_mut ( ) . push ( BasicBlockData {
@@ -1135,7 +1131,7 @@ fn create_cases<'tcx>(
1135
1131
transform : & TransformVisitor < ' tcx > ,
1136
1132
operation : Operation ,
1137
1133
) -> Vec < ( usize , BasicBlock ) > {
1138
- let source_info = source_info ( body) ;
1134
+ let source_info = SourceInfo :: outermost ( body. span ) ;
1139
1135
1140
1136
transform
1141
1137
. suspension_points
@@ -1241,7 +1237,7 @@ impl<'tcx> MirPass<'tcx> for StateTransform {
1241
1237
replace_local ( resume_local, body. local_decls [ resume_local] . ty , body, tcx) ;
1242
1238
1243
1239
// When first entering the generator, move the resume argument into its new local.
1244
- let source_info = source_info ( body) ;
1240
+ let source_info = SourceInfo :: outermost ( body. span ) ;
1245
1241
let stmts = & mut body. basic_blocks_mut ( ) [ BasicBlock :: new ( 0 ) ] . statements ;
1246
1242
stmts. insert (
1247
1243
0 ,
0 commit comments