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 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
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
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto 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 Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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