If the MIR Statement has a span contributive to computing coverage spans,
return it; otherwise return None.
If the MIR Terminator has a span contributive to computing coverage spans,
return it; otherwise return None.
Traverses the MIR body to produce an initial collection of coverage-relevant
spans, each associated with a node in the coverage graph (BCB) and possibly
other metadata.
Macros that expand into branches (e.g. assert!, trace!) tend to generate
multiple condition/consequent blocks that have the span of the whole macro
invocation, which is unhelpful. Keeping only the first such span seems to
give better mappings, so remove the others.
When a span corresponds to a macro invocation that is visible from the
function body, split it into two parts. The first part covers just the
macro name plus !, and the second part covers the rest of the macro
invocation. This seems to give better results for code that uses macros.
Walks through the expansion ancestors of
original_span to find a span that
is contained in
body_span and has the same
SyntaxContext as
body_span.
The ancestor that was traversed just before the matching span (if any) is
also returned.
Returns an extrapolated span (pre-expansion) corresponding to a range
within the function’s body source. This span is guaranteed to be contained
within, or equal to, the body_span. If the extrapolated span is not
contained within the body_span, None is returned.