Struct rustc_mir_transform::coverage::spans::CoverageSpan [−][src]
pub(super) struct CoverageSpan {
pub span: Span,
pub expn_span: Span,
pub current_macro_or_none: RefCell<Option<Option<Symbol>>>,
pub bcb: BasicCoverageBlock,
pub coverage_statements: Vec<CoverageStatement>,
pub is_closure: bool,
}
Expand description
A BCB is deconstructed into one or more Span
s. Each Span
maps to a CoverageSpan
that
references the originating BCB and one or more MIR Statement
s and/or Terminator
s.
Initially, the Span
s come from the Statement
s and Terminator
s, but subsequent
transforms can combine adjacent Span
s and CoverageSpan
from the same BCB, merging the
CoverageStatement
vectors, and the Span
s to cover the extent of the combined Span
s.
Note: A CoverageStatement
merged into another CoverageSpan may come from a BasicBlock
that
is not part of the CoverageSpan
bcb if the statement was included because it’s Span
matches
or is subsumed by the Span
associated with this CoverageSpan
, and it’s BasicBlock
is_dominated_by()
the BasicBlock
s in this CoverageSpan
.
Fields
span: Span
expn_span: Span
current_macro_or_none: RefCell<Option<Option<Symbol>>>
bcb: BasicCoverageBlock
coverage_statements: Vec<CoverageStatement>
is_closure: bool
Implementations
pub fn for_statement<'tcx>(
statement: &Statement<'tcx>,
span: Span,
expn_span: Span,
bcb: BasicCoverageBlock,
bb: BasicBlock,
stmt_index: usize
) -> Self
pub fn for_terminator(
span: Span,
expn_span: Span,
bcb: BasicCoverageBlock,
bb: BasicBlock
) -> Self
pub fn format_coverage_statements<'tcx, 'a>(
&self,
tcx: TyCtxt<'tcx>,
mir_body: &'a Body<'tcx>
) -> String
If the span is part of a macro, returns the macro name symbol.
If the span is part of a macro, and the macro is visible (expands directly to the given body_span), returns the macro name symbol.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for CoverageSpan
impl !Send for CoverageSpan
impl !Sync for CoverageSpan
impl Unpin for CoverageSpan
impl UnwindSafe for CoverageSpan
Blanket Implementations
Mutably borrows from an owned value. Read more
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 64 bytes