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: bool

Implementations

impl CoverageSpan[src]

pub fn for_fn_sig(fn_sig_span: Span) -> Self[src]

pub fn for_statement<'tcx>(
    statement: &Statement<'tcx>,
    span: Span,
    expn_span: Span,
    bcb: BasicCoverageBlock,
    bb: BasicBlock,
    stmt_index: usize
) -> Self
[src]

pub fn for_terminator(
    span: Span,
    expn_span: Span,
    bcb: BasicCoverageBlock,
    bb: BasicBlock
) -> Self
[src]

pub fn merge_from(&mut self, other: CoverageSpan)[src]

pub fn cutoff_statements_at(&mut self, cutoff_pos: BytePos)[src]

pub fn is_mergeable(&self, other: &Self) -> bool[src]

pub fn is_in_same_bcb(&self, other: &Self) -> bool[src]

pub fn format<'tcx, 'a>(
    &self,
    tcx: TyCtxt<'tcx>,
    mir_body: &'a Body<'tcx>
) -> String
[src]

pub fn format_coverage_statements<'tcx, 'a>(
    &self,
    tcx: TyCtxt<'tcx>,
    mir_body: &'a Body<'tcx>
) -> String
[src]

pub fn current_macro(&self) -> Option<Symbol>[src]

If the span is part of a macro, returns the macro name symbol.

pub fn visible_macro(&self, body_span: Span) -> Option<Symbol>[src]

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[src]

Trait Implementations

impl Clone for CoverageSpan[src]

fn clone(&self) -> CoverageSpan[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for CoverageSpan[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. 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

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone, 
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T> WithConstness for T[src]

fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]

fn with_const(self) -> ConstnessAnd<Self>[src]

fn without_const(self) -> ConstnessAnd<Self>[src]