about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/coverage/spans.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-06-03 15:27:30 +1000
committerZalathar <Zalathar@users.noreply.github.com>2024-06-04 13:11:45 +1000
commit9c931c01f70d12d7296fead28b1c3dc417bb9372 (patch)
tree57770e94ce15408435f6b258e972d4cbb31172af /compiler/rustc_mir_transform/src/coverage/spans.rs
parentdf96cba432d9e869765385d6474b505494533435 (diff)
downloadrust-9c931c01f70d12d7296fead28b1c3dc417bb9372.tar.gz
rust-9c931c01f70d12d7296fead28b1c3dc417bb9372.zip
coverage: Return a nested vector from initial span extraction
This will allow the span extractor to produce multiple separate buckets,
instead of just one flat list of spans.
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/spans.rs')
-rw-r--r--compiler/rustc_mir_transform/src/coverage/spans.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs
index f2f76ac70c2..b0bd514f690 100644
--- a/compiler/rustc_mir_transform/src/coverage/spans.rs
+++ b/compiler/rustc_mir_transform/src/coverage/spans.rs
@@ -20,13 +20,16 @@ pub(super) fn extract_refined_covspans(
     basic_coverage_blocks: &CoverageGraph,
     code_mappings: &mut impl Extend<mappings::CodeMapping>,
 ) {
-    let sorted_spans =
+    let sorted_span_buckets =
         from_mir::mir_to_initial_sorted_coverage_spans(mir_body, hir_info, basic_coverage_blocks);
-    let coverage_spans = SpansRefiner::refine_sorted_spans(sorted_spans);
-    code_mappings.extend(coverage_spans.into_iter().map(|RefinedCovspan { bcb, span, .. }| {
-        // Each span produced by the generator represents an ordinary code region.
-        mappings::CodeMapping { span, bcb }
-    }));
+    for bucket in sorted_span_buckets {
+        let refined_spans = SpansRefiner::refine_sorted_spans(bucket);
+        code_mappings.extend(refined_spans.into_iter().map(|covspan| {
+            let RefinedCovspan { span, bcb, is_hole: _ } = covspan;
+            // Each span produced by the refiner represents an ordinary code region.
+            mappings::CodeMapping { span, bcb }
+        }));
+    }
 }
 
 #[derive(Debug)]