@@ -52,6 +52,7 @@ pub(super) struct MCDCDecision {
5252 pub ( super ) decision_depth : u16 ,
5353}
5454
55+ #[ derive( Default ) ]
5556pub ( super ) struct CoverageSpans {
5657 pub ( super ) code_mappings : Vec < CodeMapping > ,
5758 pub ( super ) branch_pairs : Vec < BranchPair > ,
@@ -73,33 +74,35 @@ pub(super) fn generate_coverage_spans(
7374 hir_info : & ExtractedHirInfo ,
7475 basic_coverage_blocks : & CoverageGraph ,
7576) -> CoverageSpans {
76- let mut code_mappings = vec ! [ ] ;
77- let mut branch_pairs = vec ! [ ] ;
78- let mut mcdc_branches = vec ! [ ] ;
79- let mut mcdc_decisions = vec ! [ ] ;
80-
8177 if hir_info. is_async_fn {
8278 // An async function desugars into a function that returns a future,
8379 // with the user code wrapped in a closure. Any spans in the desugared
8480 // outer function will be unhelpful, so just keep the signature span
8581 // and ignore all of the spans in the MIR body.
82+ let mut mappings = CoverageSpans :: default ( ) ;
8683 if let Some ( span) = hir_info. fn_sig_span_extended {
87- code_mappings. push ( CodeMapping { span, bcb : START_BCB } ) ;
84+ mappings . code_mappings . push ( CodeMapping { span, bcb : START_BCB } ) ;
8885 }
89- } else {
90- extract_refined_covspans ( mir_body, hir_info, basic_coverage_blocks, & mut code_mappings) ;
91-
92- branch_pairs. extend ( extract_branch_pairs ( mir_body, hir_info, basic_coverage_blocks) ) ;
93-
94- extract_mcdc_mappings (
95- mir_body,
96- hir_info. body_span ,
97- basic_coverage_blocks,
98- & mut mcdc_branches,
99- & mut mcdc_decisions,
100- ) ;
86+ return mappings;
10187 }
10288
89+ let mut code_mappings = vec ! [ ] ;
90+ let mut branch_pairs = vec ! [ ] ;
91+ let mut mcdc_branches = vec ! [ ] ;
92+ let mut mcdc_decisions = vec ! [ ] ;
93+
94+ extract_refined_covspans ( mir_body, hir_info, basic_coverage_blocks, & mut code_mappings) ;
95+
96+ branch_pairs. extend ( extract_branch_pairs ( mir_body, hir_info, basic_coverage_blocks) ) ;
97+
98+ extract_mcdc_mappings (
99+ mir_body,
100+ hir_info. body_span ,
101+ basic_coverage_blocks,
102+ & mut mcdc_branches,
103+ & mut mcdc_decisions,
104+ ) ;
105+
103106 // Determine the length of the test vector bitmap.
104107 let test_vector_bitmap_bytes = mcdc_decisions
105108 . iter ( )
0 commit comments