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§
- annotate_snippet_ emitter_ writer 
- Emit diagnostics using the annotate-snippetslibrary
- codes
- This module defines the following.
- decorate_diag 🔒
- diagnostic 🔒
- diagnostic_impls 🔒
- emitter
- The current rustc diagnostics emitter.
- error
- json
- A JSON emitter for errors.
- lock 🔒
- Bindings to acquire a global named lock.
- markdown
- A simple markdown parser that can write formatted text to the terminal
- registry
- snippet 🔒
- styled_buffer 🔒
- timings
- translation
Macros§
Structs§
- BufferedEarly Lint 
- Lints that are buffered up early on in the Sessionbefore theLintLevelsis calculated.
- BugAbort
- Marker type which enables implementation of create_bugandemit_bugfunctions for bug diagnostics.
- CodeSuggestion 
- ColorSpec 
- A color specification.
- DelayedBugPanic 
- Signifies that the compiler died due to a delayed bug rather than a failed assertion, etc.
- DelayedDiag 🔒Inner 
- Diag
- Used for emitting structured error messages and other diagnostic information.
Wraps a DiagInner, adding some useful things.
- DiagArgFrom Display 
- DiagCtxt 
- A DiagCtxtdeals with errors and other compiler output. Certain errors (fatal, bug, unimpl) may cause immediate exit, others log errors for later reporting.
- DiagCtxt Flags 
- DiagCtxt Handle 
- DiagCtxt 🔒Inner 
- 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.
- DiagInner 
- The main part of a diagnostic. Note that Diag, which wraps this type, is used for most operations, and should be used instead whenever possible. This type should only be used whenDiag’s lifetime causes difficulties, e.g. when storing diagnostics withinDiagCtxt.
- DiagStyled String 
- DiagSymbol List 
- ElidedLifetime InPath Subdiag 
- ErrorGuaranteed 
- Useful type to use with Result<>indicate that an error has already been reported to the user, so no need to continue checking.
- ExpectedLifetime Parameter 
- ExplicitBug 
- Signifies that the compiler died with an explicit call to .bugor.span_bugrather than a failed assertion, etc.
- FatalAbort 
- Marker type which enables implementation of create_fatalandemit_fatalfunctions for fatal diagnostics.
- FatalError 
- Used as a return value to signify a fatal error occurred.
- FatalError Marker 
- This is a marker for a fatal compiler error used with resume_unwind.
- IndicateAnonymous Lifetime 
- LanguageIdentifier 
- LanguageIdentifieris a core struct representing a Unicode Language Identifier.
- LintBuffer 
- MultiSpan 
- A collection of Spans.
- SingleLabel Many Spans 
- Utility struct used to apply a single label while highlighting multiple spans
- SpanLabel 
- A span together with some additional data.
- StringPart 
- Subdiag
- A “sub”-diagnostic attached to a parent diagnostic. For example, a note attached to an error.
- Substitution
- See the docs on CodeSuggestion::substitutions
- SubstitutionHighlight 🔒
- Used to translate between Spans and byte positions within a single output line in highlighted code of structured suggestions.
- SubstitutionPart 
Enums§
- Applicability
- Indicates the confidence in the correctness of a suggestion.
- Color
- The set of available colors for the terminal foreground/background.
- DecorateDiag Compat 
- We can’t implement LintDiagnosticforBuiltinLintDiag, because decorating some of its variants requires types we don’t have yet. So, handle that case separately.
- DiagArgValue 
- Simplified version of FluentValuethat can implementEncodableandDecodable. Converted to aFluentValueby the emitter to be used in diagnostic translation.
- DiagMessage 
- Abstraction over a message in a diagnostic to support both translatable and non-translatable diagnostic messages.
- Level
- StashKey 
- A key denoting where from a diagnostic was stashed.
- Style
- SubdiagMessage 
- Abstraction over a message in a subdiagnostic (i.e. label, note, help, etc) to support both translatable and non-translatable diagnostic messages.
- SuggestionStyle 
- Suggestions
- Represents the help messages seen on a diagnostic.
- TerminalUrl 
Statics§
- DEFAULT_LOCALE_ RESOURCE 
- Raw content of Fluent resource for this crate, generated by fluent_messagesmacro, imported byrustc_driverto include all crates’ resources in one bundle.
- TRACK_DIAGNOSTIC 
- Diagnostics emitted by DiagCtxtInner::emit_diagnosticare passed through this function. Used for tracking by incremental, to replay diagnostics as necessary.
Traits§
- Diagnostic
- Trait implemented by error types. This is rarely implemented manually. Instead, use
#[derive(Diagnostic)]– see rustc_macros::Diagnostic.
- EmissionGuarantee 
- Trait for types that Diag::emitcan return as a “guarantee” (or “proof”) token that the emission happened.
- IntoDiag Arg 
- Converts a value of a type into a DiagArg(typically a field of anDiagstruct). Implemented as a custom trait rather thanFromso that it is implemented on the type being converted rather than onDiagArgValue, which enables types from otherrustc_*crates to implement this.
- LintDiagnostic 
- Trait implemented by lint types. This should not be implemented manually. Instead, use
#[derive(LintDiagnostic)]– see rustc_macros::LintDiagnostic.
- LintDiagnostic Box 
- LintEmitter 
- Used to avoid depending on rustc_middleinrustc_attr_parsing. Always theTyCtxt.
- Subdiagnostic
- Trait implemented by error types. This should not be implemented manually. Instead, use
#[derive(Subdiagnostic)]– see rustc_macros::Subdiagnostic.
- WriteColor 
- This trait describes the behavior of writers that support colored output.
Functions§
- a_or_an
- Grammatical tool for displaying messages to end users in a nice form.
- as_substr 🔒
- Given an original string like AACC, and a suggestion likeAABBCC, try to detect the case where a substring of the suggestion is “sandwiched” in the original, likeBBis. Return the length of the prefix, the “trimmed” suggestion, and the length of the suffix.
- default_track_ 🔒diagnostic 
- elided_lifetime_ in_ path_ suggestion 
- fallback_fluent_ bundle 
- Return the default FluentBundlewith standard “en-US” diagnostic messages.
- fluent_bundle 
- Returns Fluent bundle with the user’s locale resources from
$sysroot/share/locale/$requested_locale/*.ftl.
- listify
- Grammatical tool for displaying messages to end users in a nice form.
- report_ambiguity_ error 
Type Aliases§
- DiagArg
- Simplified version of FluentArgthat can implementEncodableandDecodable. Collection ofDiagArgare converted toFluentArgs(consuming the collection) at the start of diagnostic emission.
- DiagArgMap 
- DiagArgName 
- Name of a diagnostic argument.
- FluentBundle 
- LazyFallback Bundle 
- Type alias for the result of fallback_fluent_bundle- a reference-counted pointer to a lazily evaluated fluent bundle.
- PResult