MultiSpan in rustc_errors - Rust (original) (raw)
pub struct MultiSpan {
pub(crate) primary_spans: Vec<Span>,
pub(crate) span_labels: Vec<(Span, DiagMessage)>,
}
Expand description
A collection of Span
s.
Spans have two orthogonal attributes:
- They can be primary spans. In this case they are the locus of the error, and would be rendered with
^^^
. - They can have a label. In this case, the label is written next to the mark in the snippet when we render.
Selects the first primary span (if any).
Returns all primary spans.
Returns true
if any of the primary spans are displayable.
Returns true
if this contains only a dummy primary span with any hygienic context.
Replaces all occurrences of one Span with another. Used to move Span
s in areas that don’t display well (like std macros). Returns whether replacements occurred.
Returns the strings to highlight. We always ensure that there is an entry for each of the primary spans – for each primary span P
, if there is at least one label with span P
, we return those labels (marked as primary). But otherwise we returnSpanLabel
instances with empty labels.
Returns true
if any of the span labels is displayable.
Clone this MultiSpan
without keeping any of the span labels - sometimes a MultiSpan
is to be re-used in another diagnostic, but includes span_labels
which have translated messages. These translated messages would fail to translate without their diagnostic arguments which are unlikely to be cloned alongside the Span
.
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: 48 bytes