From 776684be1599e81a58b9d08f2cba17f5abcc1f0a Mon Sep 17 00:00:00 2001 From: Zalathar Date: Sun, 18 Feb 2024 20:54:10 +1100 Subject: [PATCH] coverage: Simplify (non-closure) covspans truncating each other --- compiler/rustc_mir_transform/src/coverage/spans.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs index 3329d5b25ad9b..f6cc2dd765484 100644 --- a/compiler/rustc_mir_transform/src/coverage/spans.rs +++ b/compiler/rustc_mir_transform/src/coverage/spans.rs @@ -132,11 +132,13 @@ impl PrevCovspan { self.merged_spans.push(other.span); } - fn cutoff_statements_at(&mut self, cutoff_pos: BytePos) { + fn cutoff_statements_at(mut self, cutoff_pos: BytePos) -> Option { self.merged_spans.retain(|span| span.hi() <= cutoff_pos); if let Some(max_hi) = self.merged_spans.iter().map(|span| span.hi()).max() { self.span = self.span.with_hi(max_hi); } + + if self.merged_spans.is_empty() { None } else { Some(self.into_refined()) } } fn refined_copy(&self) -> RefinedCovspan { @@ -372,13 +374,11 @@ impl SpansRefiner { ); let curr_span = self.curr().span; - self.prev_mut().cutoff_statements_at(curr_span.lo()); - if self.prev().merged_spans.is_empty() { - debug!(" ... no non-overlapping statements to add"); - } else { - debug!(" ... adding modified prev={:?}", self.prev()); - let prev = self.take_prev().into_refined(); + if let Some(prev) = self.take_prev().cutoff_statements_at(curr_span.lo()) { + debug!("after cutoff, adding {prev:?}"); self.refined_spans.push(prev); + } else { + debug!("prev was eliminated by cutoff"); } } }