about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/coverage/spans.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-12-30 13:39:44 +0000
committerbors <bors@rust-lang.org>2023-12-30 13:39:44 +0000
commite45a937a117cdbe9cd69ed47e03f7ad28cc6ef29 (patch)
tree554b4bdd5a1520aad8de5f6e2405b3fff3e9413d /compiler/rustc_mir_transform/src/coverage/spans.rs
parentd59f06fc64844ec2073e5e888f7470989ef25ff9 (diff)
parent3f67118ae7dcd7c35ca18f23cac787254004bc62 (diff)
downloadrust-e45a937a117cdbe9cd69ed47e03f7ad28cc6ef29.tar.gz
rust-e45a937a117cdbe9cd69ed47e03f7ad28cc6ef29.zip
Auto merge of #119438 - Zalathar:prepare-mappings, r=cjgillot
coverage: Prepare mappings separately from injecting statements

These two tasks historically needed to be interleaved, but after various recent changes (including #116046 and #116917) they can now be fully separated.

---

`@rustbot` label +A-code-coverage
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/spans.rs')
-rw-r--r--compiler/rustc_mir_transform/src/coverage/spans.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs
index ae43a18ad4e..ed091752187 100644
--- a/compiler/rustc_mir_transform/src/coverage/spans.rs
+++ b/compiler/rustc_mir_transform/src/coverage/spans.rs
@@ -48,8 +48,13 @@ impl CoverageSpans {
         !self.bcb_to_spans[bcb].is_empty()
     }
 
-    pub(super) fn spans_for_bcb(&self, bcb: BasicCoverageBlock) -> &[Span] {
-        &self.bcb_to_spans[bcb]
+    pub(super) fn bcbs_with_coverage_spans(
+        &self,
+    ) -> impl Iterator<Item = (BasicCoverageBlock, &[Span])> {
+        self.bcb_to_spans.iter_enumerated().filter_map(|(bcb, spans)| {
+            // Only yield BCBs that have at least one coverage span.
+            (!spans.is_empty()).then_some((bcb, spans.as_slice()))
+        })
     }
 }