Struct rustc_mir_transform::coverage::spans::CoverageSpan
source · [−]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
sourceimpl CoverageSpan
impl CoverageSpan
pub fn for_fn_sig(fn_sig_span: Span) -> Self
pub fn for_statement(
statement: &Statement<'_>,
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 merge_from(&mut self, other: CoverageSpan)
pub fn cutoff_statements_at(&mut self, cutoff_pos: BytePos)
pub fn is_mergeable(&self, other: &Self) -> bool
pub fn is_in_same_bcb(&self, other: &Self) -> bool
pub fn format<'tcx>(&self, tcx: TyCtxt<'tcx>, mir_body: &Body<'tcx>) -> String
pub fn format_coverage_statements<'tcx>(
&self,
tcx: TyCtxt<'tcx>,
mir_body: &Body<'tcx>
) -> String
sourcepub fn current_macro(&self) -> Option<Symbol>
pub fn current_macro(&self) -> Option<Symbol>
If the span is part of a macro, returns the macro name symbol.
sourcepub fn visible_macro(&self, body_span: Span) -> Option<Symbol>
pub fn visible_macro(&self, body_span: Span) -> Option<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.
pub fn is_macro_expansion(&self) -> bool
Trait Implementations
sourceimpl Clone for CoverageSpan
impl Clone for CoverageSpan
sourcefn clone(&self) -> CoverageSpan
fn clone(&self) -> CoverageSpan
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. 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