pub struct Diagnostic {
pub messages: Vec<(DiagnosticMessage, Style)>,
pub span: MultiSpan,
pub children: Vec<SubDiagnostic>,
pub code: Option<DiagnosticId>,
pub created_at: &'static Location<'static>,
/* private fields */
}
Expand description
A compiler diagnostic.
Fields§
§messages: Vec<(DiagnosticMessage, Style)>
§span: MultiSpan
§children: Vec<SubDiagnostic>
§code: Option<DiagnosticId>
§created_at: &'static Location<'static>
Implementations§
Source§impl Diagnostic
impl Diagnostic
Sourcepub fn new<M: Into<DiagnosticMessage>>(level: Level, msg: M) -> Self
pub fn new<M: Into<DiagnosticMessage>>(level: Level, msg: M) -> Self
Creates a new Diagnostic
with a single message.
Sourcepub fn new_with_messages(
level: Level,
messages: Vec<(DiagnosticMessage, Style)>,
) -> Self
pub fn new_with_messages( level: Level, messages: Vec<(DiagnosticMessage, Style)>, ) -> Self
Creates a new Diagnostic
with multiple messages.
Sourcepub fn messages(&self) -> &[(DiagnosticMessage, Style)]
pub fn messages(&self) -> &[(DiagnosticMessage, Style)]
Returns the messages of this diagnostic.
Source§impl Diagnostic
Setters.
impl Diagnostic
Setters.
Sourcepub fn span(&mut self, span: impl Into<MultiSpan>) -> &mut Self
pub fn span(&mut self, span: impl Into<MultiSpan>) -> &mut Self
Sets the span of this diagnostic.
Sourcepub fn code(&mut self, code: impl Into<DiagnosticId>) -> &mut Self
pub fn code(&mut self, code: impl Into<DiagnosticId>) -> &mut Self
Sets the code of this diagnostic.
Sourcepub fn span_label(
&mut self,
span: Span,
label: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_label( &mut self, span: Span, label: impl Into<DiagnosticMessage>, ) -> &mut Self
Adds a span/label to be included in the resulting snippet.
This is pushed onto the MultiSpan
that was created when the diagnostic
was first built. That means it will be shown together with the original
span/label, not a span added by one of the span_{note,warn,help,suggestions}
methods.
This span is not considered a “primary span”; only
the Span
supplied when creating the diagnostic is primary.
Sourcepub fn span_labels(
&mut self,
spans: impl IntoIterator<Item = Span>,
label: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_labels( &mut self, spans: impl IntoIterator<Item = Span>, label: impl Into<DiagnosticMessage>, ) -> &mut Self
Labels all the given spans with the provided label.
See Self::span_label()
for more information.
Source§impl Diagnostic
Sub-diagnostics.
impl Diagnostic
Sub-diagnostics.
Sourcepub fn warn(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
pub fn warn(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
Add a warning attached to this diagnostic.
Sourcepub fn span_warn(
&mut self,
span: impl Into<MultiSpan>,
msg: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_warn( &mut self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, ) -> &mut Self
Prints the span with a warning above it.
This is like Diagnostic::warn()
, but it gets its own span.
Sourcepub fn note(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
pub fn note(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
Add a note to this diagnostic.
Sourcepub fn span_note(
&mut self,
span: impl Into<MultiSpan>,
msg: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_note( &mut self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, ) -> &mut Self
Prints the span with a note above it.
This is like Diagnostic::note()
, but it gets its own span.
pub fn highlighted_note( &mut self, messages: Vec<(impl Into<DiagnosticMessage>, Style)>, ) -> &mut Self
Sourcepub fn note_once(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
pub fn note_once(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
Prints the span with a note above it.
This is like Diagnostic::note()
, but it gets emitted only once.
Sourcepub fn span_note_once(
&mut self,
span: impl Into<MultiSpan>,
msg: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_note_once( &mut self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, ) -> &mut Self
Prints the span with a note above it.
This is like Diagnostic::note_once()
, but it gets its own span.
Sourcepub fn help(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
pub fn help(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
Add a help message attached to this diagnostic.
Sourcepub fn help_once(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
pub fn help_once(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self
Prints the span with a help above it.
This is like Diagnostic::help()
, but it gets its own span.
Sourcepub fn highlighted_help(
&mut self,
msgs: Vec<(impl Into<DiagnosticMessage>, Style)>,
) -> &mut Self
pub fn highlighted_help( &mut self, msgs: Vec<(impl Into<DiagnosticMessage>, Style)>, ) -> &mut Self
Add a help message attached to this diagnostic with a customizable highlighted message.
Sourcepub fn span_help(
&mut self,
span: impl Into<MultiSpan>,
msg: impl Into<DiagnosticMessage>,
) -> &mut Self
pub fn span_help( &mut self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, ) -> &mut Self
Prints the span with some help above it.
This is like Diagnostic::help()
, but it gets its own span.
Trait Implementations§
Source§impl Clone for Diagnostic
impl Clone for Diagnostic
Source§fn clone(&self) -> Diagnostic
fn clone(&self) -> Diagnostic
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Diagnostic
impl Debug for Diagnostic
Source§impl Hash for Diagnostic
impl Hash for Diagnostic
Source§impl PartialEq for Diagnostic
impl PartialEq for Diagnostic
Auto Trait Implementations§
impl Freeze for Diagnostic
impl RefUnwindSafe for Diagnostic
impl Send for Diagnostic
impl Sync for Diagnostic
impl Unpin for Diagnostic
impl UnwindSafe for Diagnostic
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more