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-snippetslibrary - 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_*_bugrather 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
.bugor.span_bugrather 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.
LanguageIdentifieris a core struct representing a Unicode Language Identifier.- A collection of
Spans. - Marker type which enables implementation of
create_noteandemit_notefunctions 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
Spans 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
FluentValuethat can implementEncodableandDecodable. Converted to aFluentValueby 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_messagesmacro, imported byrustc_driverto 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::emitcan 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 anIntoDiagnosticstruct). Implemented as a custom trait rather thanFromso 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
FluentBundlewith 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
FluentArgthat can implementEncodableandDecodable. Collection ofDiagnosticArgare 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.