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 Spans. Each Span maps to a CoverageSpan that
references the originating BCB and one or more MIR Statements and/or Terminators.
Initially, the Spans come from the Statements and Terminators, but subsequent
transforms can combine adjacent Spans and CoverageSpan from the same BCB, merging the
CoverageStatement vectors, and the Spans to cover the extent of the combined Spans.
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 BasicBlocks in this CoverageSpan.
Fields
span: Spanexpn_span: Spancurrent_macro_or_none: RefCell<Option<Option<Symbol>>>bcb: BasicCoverageBlockcoverage_statements: Vec<CoverageStatement>is_closure: boolImplementations
pub fn for_statement<'tcx>(
statement: &Statement<'tcx>,
span: Span,
expn_span: Span,
bcb: BasicCoverageBlock,
bb: BasicBlock,
stmt_index: usize
) -> Selfpub fn for_terminator(
span: Span,
expn_span: Span,
bcb: BasicCoverageBlock,
bb: BasicBlock
) -> Selfpub fn format_coverage_statements<'tcx, 'a>(
&self,
tcx: TyCtxt<'tcx>,
mir_body: &'a Body<'tcx>
) -> StringIf 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 CoverageSpanimpl !Send for CoverageSpanimpl !Sync for CoverageSpanimpl Unpin for CoverageSpanimpl UnwindSafe for CoverageSpanBlanket Implementations
Mutably borrows from an owned value. Read more
Layout
Note: Most layout information is completely unstable and may be different between compiler versions and platforms. 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