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 rustc_error_messages::fluent_bundle;
Modules
Emit diagnostics using the
annotate-snippets
libraryThe current rustc diagnostics emitter.
A JSON emitter for errors.
lock 🔒
Bindings to acquire a global named lock.
snippet 🔒
Macros
Structs
A workaround for “good path” ICEs when formatting types in disables lints.
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
and emit_note
functions for
note-without-error struct diagnostics.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.
Simplified version of
FluentValue
that can implement Encodable
and Decodable
. Converted
to a FluentValue
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
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 an IntoDiagnostic
struct). Implemented as a custom trait rather than From
so that it is implemented on the type
being converted rather than on DiagnosticArgValue
, which enables types from other rustc_*
crates to implement this.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 Definitions
Simplified version of
FluentArg
that can implement Encodable
and Decodable
. Collection of
DiagnosticArg
are converted to FluentArgs
(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.