Struct rustc_errors::Handler

source ·
pub struct Handler {
    pub(crate) inner: Lock<HandlerInner>,
}
Expand description

A handler deals with errors and other compiler output. Certain errors (fatal, bug, unimpl) may cause immediate exit, others log errors for later reporting.

Fields§

§inner: Lock<HandlerInner>

Implementations§

source§

impl Handler

source

pub fn with_tty_emitter( sm: Option<Lrc<SourceMap>>, fallback_bundle: LazyFallbackBundle ) -> Self

source

pub fn disable_warnings(self) -> Self

source

pub fn treat_err_as_bug(self, treat_err_as_bug: NonZeroUsize) -> Self

source

pub fn with_flags(self, flags: HandlerFlags) -> Self

source

pub fn with_ice_file(self, ice_file: PathBuf) -> Self

source

pub fn with_emitter(emitter: Box<DynEmitter>) -> Self

source

pub fn eagerly_translate<'a>( &self, message: DiagnosticMessage, args: impl Iterator<Item = DiagnosticArg<'a, 'static>> ) -> SubdiagnosticMessage

Translate message eagerly with args to SubdiagnosticMessage::Eager.

source

pub fn eagerly_translate_to_string<'a>( &self, message: DiagnosticMessage, args: impl Iterator<Item = DiagnosticArg<'a, 'static>> ) -> String

Translate message eagerly with args to String.

source

pub fn can_emit_warnings(&self) -> bool

source

pub fn reset_err_count(&self)

Resets the diagnostic error count as well as the cached emitted diagnostics.

NOTE: do not call this function from rustc. It is only meant to be called from external tools that want to reuse a Parser cleaning the previously emitted diagnostics as well as the overall count of emitted error diagnostics.

source

pub fn stash_diagnostic(&self, span: Span, key: StashKey, diag: Diagnostic)

Stash a given diagnostic with the given Span and StashKey as the key. Retrieve a stashed diagnostic with steal_diagnostic.

source

pub fn steal_diagnostic( &self, span: Span, key: StashKey ) -> Option<DiagnosticBuilder<'_, ()>>

Steal a previously stashed diagnostic with the given Span and StashKey as the key.

source

pub fn has_stashed_diagnostic(&self, span: Span, key: StashKey) -> bool

source

pub fn emit_stashed_diagnostics(&self) -> Option<ErrorGuaranteed>

Emit all stashed diagnostics.

source

pub fn struct_diagnostic<G: EmissionGuarantee>( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, G>

Construct a builder with the msg at the level appropriate for the specific EmissionGuarantee.

source

pub fn struct_span_warn( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warning level at the given span and with the msg.

Attempting to .emit() the builder will only emit if either:

  • can_emit_warnings is true
  • is_force_warn was set in DiagnosticId::Lint
source

pub fn struct_span_warn_with_expectation( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warning level at the given span and with the msg. The id is used for lint emissions which should also fulfill a lint expectation.

Attempting to .emit() the builder will only emit if either:

  • can_emit_warnings is true
  • is_force_warn was set in DiagnosticId::Lint
source

pub fn struct_span_allow( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Allow level at the given span and with the msg.

source

pub fn struct_span_warn_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warning level at the given span and with the msg. Also include a code.

source

pub fn struct_warn( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warning level with the msg.

Attempting to .emit() the builder will only emit if either:

  • can_emit_warnings is true
  • is_force_warn was set in DiagnosticId::Lint
source

pub fn struct_warn_with_expectation( &self, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warning level with the msg. The id is used for lint emissions which should also fulfill a lint expectation.

Attempting to .emit() the builder will only emit if either:

  • can_emit_warnings is true
  • is_force_warn was set in DiagnosticId::Lint
source

pub fn struct_allow( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Allow level with the msg.

source

pub fn struct_expect( &self, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Expect level with the msg.

source

pub fn struct_span_err( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

Construct a builder at the Error level at the given span and with the msg.

source

pub fn struct_span_err_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

Construct a builder at the Error level at the given span, with the msg, and code.

source

pub fn struct_err( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

Construct a builder at the Error level with the msg.

source

pub fn struct_err_with_code( &self, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

Construct a builder at the Error level with the msg and the code.

source

pub fn struct_warn_with_code( &self, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Warn level with the msg and the code.

source

pub fn struct_span_fatal( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, !>

Construct a builder at the Fatal level at the given span and with the msg.

source

pub fn struct_span_fatal_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, !>

Construct a builder at the Fatal level at the given span, with the msg, and code.

source

pub fn struct_fatal( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, !>

Construct a builder at the Error level with the msg.

source

pub fn struct_help( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Help level with the msg.

source

pub fn struct_note_without_error( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

Construct a builder at the Note level with the msg.

source

pub fn span_fatal( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> !

source

pub fn span_fatal_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> !

source

pub fn span_err( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> ) -> ErrorGuaranteed

source

pub fn span_err_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId )

source

pub fn span_warn( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> )

source

pub fn span_warn_with_code( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage>, code: DiagnosticId )

source

pub fn span_bug(&self, span: impl Into<MultiSpan>, msg: impl Into<String>) -> !

source

pub fn delay_span_bug( &self, span: impl Into<MultiSpan>, msg: impl Into<String> ) -> ErrorGuaranteed

For documentation on this, see Session::delay_span_bug.

source

pub fn delay_good_path_bug(&self, msg: impl Into<DiagnosticMessage>)

source

pub fn span_bug_no_panic( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> )

source

pub fn span_note_without_error( &self, span: impl Into<MultiSpan>, msg: impl Into<DiagnosticMessage> )

source

pub fn span_note_diag( &self, span: Span, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn fatal(&self, msg: impl Into<DiagnosticMessage>) -> FatalError

source

pub fn err(&self, msg: impl Into<DiagnosticMessage>) -> ErrorGuaranteed

source

pub fn warn(&self, msg: impl Into<DiagnosticMessage>)

source

pub fn note_without_error(&self, msg: impl Into<DiagnosticMessage>)

source

pub fn bug(&self, msg: impl Into<DiagnosticMessage>) -> !

source

pub fn err_count(&self) -> usize

source

pub fn has_errors(&self) -> Option<ErrorGuaranteed>

source

pub fn has_errors_or_lint_errors(&self) -> Option<ErrorGuaranteed>

source

pub fn has_errors_or_delayed_span_bugs(&self) -> Option<ErrorGuaranteed>

source

pub fn is_compilation_going_to_fail(&self) -> Option<ErrorGuaranteed>

source

pub fn print_error_count(&self, registry: &Registry)

source

pub fn take_future_breakage_diagnostics(&self) -> Vec<Diagnostic>

source

pub fn abort_if_errors(&self)

source

pub fn must_teach(&self, code: &DiagnosticId) -> bool

true if we haven’t taught a diagnostic with this code already. The caller must then teach the user about such a diagnostic.

Used to suppress emitting the same error multiple times with extended explanation when calling -Zteach.

source

pub fn force_print_diagnostic(&self, db: Diagnostic)

source

pub fn emit_diagnostic( &self, diagnostic: &mut Diagnostic ) -> Option<ErrorGuaranteed>

source

pub fn emit_err<'a>(&'a self, err: impl IntoDiagnostic<'a>) -> ErrorGuaranteed

source

pub fn create_err<'a>( &'a self, err: impl IntoDiagnostic<'a> ) -> DiagnosticBuilder<'a, ErrorGuaranteed>

source

pub fn create_warning<'a>( &'a self, warning: impl IntoDiagnostic<'a, ()> ) -> DiagnosticBuilder<'a, ()>

source

pub fn emit_warning<'a>(&'a self, warning: impl IntoDiagnostic<'a, ()>)

source

pub fn create_almost_fatal<'a>( &'a self, fatal: impl IntoDiagnostic<'a, FatalError> ) -> DiagnosticBuilder<'a, FatalError>

source

pub fn emit_almost_fatal<'a>( &'a self, fatal: impl IntoDiagnostic<'a, FatalError> ) -> FatalError

source

pub fn create_fatal<'a>( &'a self, fatal: impl IntoDiagnostic<'a, !> ) -> DiagnosticBuilder<'a, !>

source

pub fn emit_fatal<'a>(&'a self, fatal: impl IntoDiagnostic<'a, !>) -> !

source

pub fn create_bug<'a>( &'a self, bug: impl IntoDiagnostic<'a, Bug> ) -> DiagnosticBuilder<'a, Bug>

source

pub fn emit_bug<'a>(&'a self, bug: impl IntoDiagnostic<'a, Bug>) -> Bug

source

pub fn emit_note<'a>(&'a self, note: impl IntoDiagnostic<'a, Noted>) -> Noted

source

pub fn create_note<'a>( &'a self, note: impl IntoDiagnostic<'a, Noted> ) -> DiagnosticBuilder<'a, Noted>

source

pub(crate) fn emit_diag_at_span( &self, diag: Diagnostic, sp: impl Into<MultiSpan> ) -> Option<ErrorGuaranteed>

source

pub fn emit_artifact_notification(&self, path: &Path, artifact_type: &str)

source

pub fn emit_future_breakage_report(&self, diags: Vec<Diagnostic>)

source

pub fn emit_unused_externs( &self, lint_level: Level, loud: bool, unused_externs: &[&str] )

source

pub fn update_unstable_expectation_id( &self, unstable_to_stable: &FxHashMap<LintExpectationId, LintExpectationId> )

source

pub fn steal_fulfilled_expectation_ids(&self) -> FxHashSet<LintExpectationId>

This methods steals all [LintExpectationId]s that are stored inside HandlerInner and indicate that the linked expectation has been fulfilled.

source

pub fn flush_delayed(&self)

Auto Trait Implementations§

§

impl !RefUnwindSafe for Handler

§

impl !Send for Handler

§

impl !Sync for Handler

§

impl Unpin for Handler

§

impl !UnwindSafe for Handler

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 416 bytes