Crate rustc_errors
source ·Expand description
Diagnostics creation and emission for rustc
.
This module contains the code for creating and emitting diagnostics.
Re-exports
pub use emitter::ColorConfig;
pub use rustc_error_messages::fluent_bundle;
Modules
- Emit diagnostics using the
annotate-snippets
library - The current rustc diagnostics emitter.
- A JSON emitter for errors.
- lock 🔒Bindings to acquire a global named lock.
- A simple markdown parser that can write formatted text to the terminal
- snippet 🔒
Macros
Structs
- A color specification.
- A workaround for “good path” ICEs when formatting types in disabled lints.
- Signifies that the compiler died with an explicit call to
.delay_*_bug
rather than a failed assertion, etc. - Used for emitting structured error messages and other diagnostic information.
- Useful type to use with
Result<>
indicate that an error has already been reported to the user, so no need to continue checking. - Signifies that the compiler died with an explicit call to
.bug
or.span_bug
rather than a failed assertion, etc. - Used as a return value to signify a fatal error occurred. (It is also used as the argument to panic at the moment, but that will eventually not be true.)
- A handler deals with errors and other compiler output. Certain errors (fatal, bug, unimpl) may cause immediate exit, others log errors for later reporting.
- This inner struct exists to keep it all behind a single lock; this is done to prevent possible deadlocks in a multi-threaded compiler, as well as inconsistent state observation.
LanguageIdentifier
is a core struct representing a Unicode Language Identifier.- A collection of
Span
s. - Marker type which enables implementation of
create_note
andemit_note
functions for note-without-error struct diagnostics. - Utility struct used to apply a single label while highlighting multiple spans
- A span together with some additional data.
- A “sub”-diagnostic attached to a parent diagnostic. For example, a note attached to an error.
- See the docs on
CodeSuggestion::substitutions
- Used to translate between
Span
s and byte positions within a single output line in highlighted code of structured suggestions.
Enums
- Indicates the confidence in the correctness of a suggestion.
- The set of available colors for the terminal foreground/background.
- Simplified version of
FluentValue
that can implementEncodable
andDecodable
. Converted to aFluentValue
by the emitter to be used in diagnostic translation. - Abstraction over a message in a diagnostic to support both translatable and non-translatable diagnostic messages.
- The kind of label to attach when using
SingleLabelManySpans
- A key denoting where from a diagnostic was stashed.
- Abstraction over a message in a subdiagnostic (i.e. label, note, help, etc) to support both translatable and non-translatable diagnostic messages.
Statics
- Raw content of Fluent resource for this crate, generated by
fluent_messages
macro, imported byrustc_driver
to include all crates’ resources in one bundle.
Traits
- Trait implemented by error types. This should not be implemented manually. Instead, use
#[derive(Subdiagnostic)]
– see rustc_macros::Subdiagnostic. - Trait implemented by lint types. This should not be implemented manually. Instead, use
#[derive(LintDiagnostic)]
– see rustc_macros::LintDiagnostic. - Trait for types that
DiagnosticBuilder::emit
can return as a “guarantee” (or “proof”) token that the emission happened. - Trait implemented by error types. This should not be implemented manually. Instead, use
#[derive(Diagnostic)]
– see rustc_macros::Diagnostic. - Converts a value of a type into a
DiagnosticArg
(typically a field of anIntoDiagnostic
struct). Implemented as a custom trait rather thanFrom
so that it is implemented on the type being converted rather than onDiagnosticArgValue
, which enables types from otherrustc_*
crates to implement this. - This trait describes the behavior of writers that support colored output.
Functions
- Return the default
FluentBundle
with standard “en-US” diagnostic messages. - Returns Fluent bundle with the user’s locale resources from
$sysroot/share/locale/$requested_locale/*.ftl
.
Type Aliases
- Simplified version of
FluentArg
that can implementEncodable
andDecodable
. Collection ofDiagnosticArg
are converted toFluentArgs
(consuming the collection) at the start of diagnostic emission. - Type alias for the result of
fallback_fluent_bundle
- a reference-counted pointer to a lazily evaluated fluent bundle.