about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/coverage/mod.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-01-03 16:42:41 +1100
committerZalathar <Zalathar@users.noreply.github.com>2024-01-11 16:43:01 +1100
commitc5932182adfe57f38438f6b7509d1f8b9f95fd73 (patch)
treefed6d6714a0405b49ea6729c2fbc8f8287e81f57 /compiler/rustc_mir_transform/src/coverage/mod.rs
parent8f98b54a7e1568bab91d4a148139d241c44a83b3 (diff)
downloadrust-c5932182adfe57f38438f6b7509d1f8b9f95fd73.tar.gz
rust-c5932182adfe57f38438f6b7509d1f8b9f95fd73.zip
coverage: Store extracted spans as a flat list of mappings
This is less elegant in some ways, since we no longer visit a BCB's spans as a
batch, but will make it much easier to add support for other kinds of coverage
mapping regions (e.g. branch regions or gap regions).
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/mod.rs')
-rw-r--r--compiler/rustc_mir_transform/src/coverage/mod.rs13
1 files changed, 3 insertions, 10 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/mod.rs b/compiler/rustc_mir_transform/src/coverage/mod.rs
index 5c1dabea987..b91afb19d8f 100644
--- a/compiler/rustc_mir_transform/src/coverage/mod.rs
+++ b/compiler/rustc_mir_transform/src/coverage/mod.rs
@@ -9,7 +9,7 @@ mod tests;
 
 use self::counters::{BcbCounter, CoverageCounters};
 use self::graph::{BasicCoverageBlock, CoverageGraph};
-use self::spans::CoverageSpans;
+use self::spans::{BcbMapping, CoverageSpans};
 
 use crate::MirPass;
 
@@ -149,16 +149,9 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> {
         };
 
         coverage_spans
-            .bcbs_with_coverage_spans()
-            // For each BCB with spans, get a coverage term for its counter.
-            .map(|(bcb, spans)| {
+            .all_bcb_mappings()
+            .filter_map(|&BcbMapping { bcb, span }| {
                 let term = term_for_bcb(bcb);
-                (term, spans)
-            })
-            // Flatten the spans into individual term/span pairs.
-            .flat_map(|(term, spans)| spans.iter().map(move |&span| (term, span)))
-            // Convert each span to a code region, and create the final mapping.
-            .filter_map(|(term, span)| {
                 let code_region = make_code_region(source_map, file_name, span, body_span)?;
                 Some(Mapping { term, code_region })
             })