@@ -90,17 +90,17 @@ pub(super) fn generate_coverage_spans(
90
90
struct CurrCovspan {
91
91
span : Span ,
92
92
bcb : BasicCoverageBlock ,
93
- is_closure : bool ,
93
+ is_hole : bool ,
94
94
}
95
95
96
96
impl CurrCovspan {
97
- fn new ( span : Span , bcb : BasicCoverageBlock , is_closure : bool ) -> Self {
98
- Self { span, bcb, is_closure }
97
+ fn new ( span : Span , bcb : BasicCoverageBlock , is_hole : bool ) -> Self {
98
+ Self { span, bcb, is_hole }
99
99
}
100
100
101
101
fn into_prev ( self ) -> PrevCovspan {
102
- let Self { span, bcb, is_closure } = self ;
103
- PrevCovspan { span, bcb, merged_spans : vec ! [ span] , is_closure }
102
+ let Self { span, bcb, is_hole } = self ;
103
+ PrevCovspan { span, bcb, merged_spans : vec ! [ span] , is_hole }
104
104
}
105
105
}
106
106
@@ -111,12 +111,12 @@ struct PrevCovspan {
111
111
/// List of all the original spans from MIR that have been merged into this
112
112
/// span. Mainly used to precisely skip over gaps when truncating a span.
113
113
merged_spans : Vec < Span > ,
114
- is_closure : bool ,
114
+ is_hole : bool ,
115
115
}
116
116
117
117
impl PrevCovspan {
118
118
fn is_mergeable ( & self , other : & CurrCovspan ) -> bool {
119
- self . bcb == other. bcb && !self . is_closure && !other. is_closure
119
+ self . bcb == other. bcb && !self . is_hole && !other. is_hole
120
120
}
121
121
122
122
fn merge_from ( & mut self , other : & CurrCovspan ) {
@@ -135,8 +135,8 @@ impl PrevCovspan {
135
135
}
136
136
137
137
fn refined_copy ( & self ) -> Option < RefinedCovspan > {
138
- let & Self { span, bcb, merged_spans : _, is_closure } = self ;
139
- ( !is_closure ) . then_some ( RefinedCovspan { span, bcb } )
138
+ let & Self { span, bcb, merged_spans : _, is_hole } = self ;
139
+ ( !is_hole ) . then_some ( RefinedCovspan { span, bcb } )
140
140
}
141
141
142
142
fn into_refined ( self ) -> Option < RefinedCovspan > {
@@ -209,7 +209,7 @@ impl SpansRefiner {
209
209
let curr = self . curr ( ) ;
210
210
211
211
if prev. is_mergeable ( curr) {
212
- debug ! ( " same bcb (and neither is a closure), merge with prev={prev:?} ") ;
212
+ debug ! ( ?prev , "curr will be merged into prev") ;
213
213
let curr = self . take_curr ( ) ;
214
214
self . prev_mut ( ) . merge_from ( & curr) ;
215
215
} else if prev. span . hi ( ) <= curr. span . lo ( ) {
@@ -218,15 +218,13 @@ impl SpansRefiner {
218
218
) ;
219
219
let prev = self . take_prev ( ) . into_refined ( ) ;
220
220
self . refined_spans . extend ( prev) ;
221
- } else if prev. is_closure {
221
+ } else if prev. is_hole {
222
222
// drop any equal or overlapping span (`curr`) and keep `prev` to test again in the
223
223
// next iter
224
- debug ! (
225
- " curr overlaps a closure (prev). Drop curr and keep prev for next iter. prev={prev:?}" ,
226
- ) ;
224
+ debug ! ( ?prev, "prev (a hole) overlaps curr, so discarding curr" ) ;
227
225
self . take_curr ( ) ; // Discards curr.
228
- } else if curr. is_closure {
229
- self . carve_out_span_for_closure ( ) ;
226
+ } else if curr. is_hole {
227
+ self . carve_out_span_for_hole ( ) ;
230
228
} else {
231
229
self . cutoff_prev_at_overlapping_curr ( ) ;
232
230
}
@@ -281,48 +279,44 @@ impl SpansRefiner {
281
279
{
282
280
// Skip curr because prev has already advanced beyond the end of curr.
283
281
// This can only happen if a prior iteration updated `prev` to skip past
284
- // a region of code, such as skipping past a closure.
285
- debug ! (
286
- " prev.span starts after curr.span, so curr will be dropped (skipping past \
287
- closure?); prev={prev:?}",
288
- ) ;
282
+ // a region of code, such as skipping past a hole.
283
+ debug ! ( ?prev, "prev.span starts after curr.span, so curr will be dropped" ) ;
289
284
} else {
290
- self . some_curr = Some ( CurrCovspan :: new ( curr. span , curr. bcb , curr. is_closure ) ) ;
285
+ self . some_curr = Some ( CurrCovspan :: new ( curr. span , curr. bcb , curr. is_hole ) ) ;
291
286
return true ;
292
287
}
293
288
}
294
289
false
295
290
}
296
291
297
- /// If `prev`s span extends left of the closure (`curr`), carve out the closure's span from
298
- /// `prev`'s span. (The closure's coverage counters will be injected when processing the
299
- /// closure's own MIR.) Add the portion of the span to the left of the closure; and if the span
300
- /// extends to the right of the closure, update `prev` to that portion of the span.
301
- fn carve_out_span_for_closure ( & mut self ) {
292
+ /// If `prev`s span extends left of the hole (`curr`), carve out the hole's span from
293
+ /// `prev`'s span. Add the portion of the span to the left of the hole; and if the span
294
+ /// extends to the right of the hole, update `prev` to that portion of the span.
295
+ fn carve_out_span_for_hole ( & mut self ) {
302
296
let prev = self . prev ( ) ;
303
297
let curr = self . curr ( ) ;
304
- assert ! ( !prev. is_closure && curr. is_closure ) ;
298
+ assert ! ( !prev. is_hole && curr. is_hole ) ;
305
299
306
300
let left_cutoff = curr. span . lo ( ) ;
307
301
let right_cutoff = curr. span . hi ( ) ;
308
- let has_pre_closure_span = prev. span . lo ( ) < right_cutoff;
309
- let has_post_closure_span = prev. span . hi ( ) > right_cutoff;
310
-
311
- if has_pre_closure_span {
312
- let mut pre_closure = prev. refined_copy ( ) . expect ( "prev is not a closure span" ) ;
313
- pre_closure . span = pre_closure . span . with_hi ( left_cutoff) ;
314
- debug ! ( " prev overlaps a closure. Adding span for pre_closure={:?}" , pre_closure ) ;
315
- self . refined_spans . push ( pre_closure ) ;
302
+ let has_pre_hole_span = prev. span . lo ( ) < right_cutoff;
303
+ let has_post_hole_span = prev. span . hi ( ) > right_cutoff;
304
+
305
+ if has_pre_hole_span {
306
+ let mut pre_hole = prev. refined_copy ( ) . expect ( "prev is not a hole span" ) ;
307
+ pre_hole . span = pre_hole . span . with_hi ( left_cutoff) ;
308
+ debug ! ( ?pre_hole , " prev overlaps a hole; adding pre-hole span" ) ;
309
+ self . refined_spans . push ( pre_hole ) ;
316
310
}
317
311
318
- if has_post_closure_span {
319
- // Mutate `prev.span` to start after the closure (and discard curr).
312
+ if has_post_hole_span {
313
+ // Mutate `prev.span` to start after the hole (and discard curr).
320
314
self . prev_mut ( ) . span = self . prev ( ) . span . with_lo ( right_cutoff) ;
321
- debug ! ( " Mutated prev.span to start after the closure. prev={:?}" , self . prev ( ) ) ;
315
+ debug ! ( prev=? self . prev ( ) , "mutated prev to start after the hole" ) ;
322
316
323
- // Discard this curr, since it's a closure span.
317
+ // Discard this curr, since it's a hole span.
324
318
let curr = self . take_curr ( ) ;
325
- assert ! ( curr. is_closure ) ;
319
+ assert ! ( curr. is_hole ) ;
326
320
}
327
321
}
328
322
0 commit comments