diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-01-03 16:42:41 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-01-11 16:43:01 +1100 |
| commit | c5932182adfe57f38438f6b7509d1f8b9f95fd73 (patch) | |
| tree | fed6d6714a0405b49ea6729c2fbc8f8287e81f57 /compiler/rustc_mir_transform/src/coverage/mod.rs | |
| parent | 8f98b54a7e1568bab91d4a148139d241c44a83b3 (diff) | |
| download | rust-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.rs | 13 |
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 }) }) |
