@@ -52,6 +52,7 @@ pub(super) struct MCDCDecision {
52
52
pub ( super ) decision_depth : u16 ,
53
53
}
54
54
55
+ #[ derive( Default ) ]
55
56
pub ( super ) struct CoverageSpans {
56
57
pub ( super ) code_mappings : Vec < CodeMapping > ,
57
58
pub ( super ) branch_pairs : Vec < BranchPair > ,
@@ -73,33 +74,35 @@ pub(super) fn generate_coverage_spans(
73
74
hir_info : & ExtractedHirInfo ,
74
75
basic_coverage_blocks : & CoverageGraph ,
75
76
) -> 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
-
81
77
if hir_info. is_async_fn {
82
78
// An async function desugars into a function that returns a future,
83
79
// with the user code wrapped in a closure. Any spans in the desugared
84
80
// outer function will be unhelpful, so just keep the signature span
85
81
// and ignore all of the spans in the MIR body.
82
+ let mut mappings = CoverageSpans :: default ( ) ;
86
83
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 } ) ;
88
85
}
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;
101
87
}
102
88
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
+
103
106
// Determine the length of the test vector bitmap.
104
107
let test_vector_bitmap_bytes = mcdc_decisions
105
108
. iter ( )
0 commit comments