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;
pub use codes::*;
Modules§
- Emit diagnostics using the
annotate-snippets
library - This module defines the following.
- 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§
- Marker type which enables implementation of
create_bug
andemit_bug
functions for bug diagnostics. - 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. - A
DiagCtxt
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.
- Used for emitting structured error messages and other diagnostic information. Each constructed
DiagnosticBuilder
must be consumed by a function such asemit
,cancel
,delay_as_bug
, orinto_diagnostic
. A panic occurrs if aDiagnosticBuilder
is dropped without being consumed by one of these functions. - 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. - Marker type which enables implementation of
create_fatal
andemit_fatal
functions for fatal diagnostics. - Used as a return value to signify a fatal error occurred.
- This is a marker for a fatal compiler error used with
resume_unwind
. LanguageIdentifier
is a core struct representing a Unicode Language Identifier.- A collection of
Span
s. - 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.
- 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 is rarely 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. - Name of a diagnostic argument.
- Type alias for the result of
fallback_fluent_bundle
- a reference-counted pointer to a lazily evaluated fluent bundle.