Struct Handler
pub struct Handler {
pub flags: HandlerFlags,
/* private fields */
}
__common
only.Expand description
A handler deals with errors; certain errors (fatal, bug, unimpl) may cause immediate exit, others log errors for later reporting.
§Example
swc
provides a global-like variable (HANDLER) of type Handler
that can
be used to report errors.
You can refer to the lint rules for other example usages. All lint rules have code for error reporting.
§Error reporting in swc
use swc_common::errors::HANDLER;
HANDLER.with(|handler| {
// You can access the handler for the current file using HANDLER.with.
// We now report an error
// `struct_span_err` creates a builder for a diagnostic.
// The span passed to `struct_span_err` will used to point the problematic code.
//
// You may provide additional information, like a previous declaration of parameter.
handler
.struct_span_err(
span,
&format!("`{}` used as parameter more than once", js_word),
)
.span_note(
old_span,
&format!("previous definition of `{}` here", js_word),
)
.emit();
});
Fields§
§flags: HandlerFlags
Implementations§
§impl Handler
impl Handler
pub fn with_tty_emitter( color_config: ColorConfig, can_emit_warnings: bool, treat_err_as_bug: bool, cm: Option<Arc<dyn SourceMapper>>, ) -> Handler
__ecma
and __utils
only.pub fn with_tty_emitter_and_flags( color_config: ColorConfig, cm: Option<Arc<dyn SourceMapper>>, flags: HandlerFlags, ) -> Handler
__ecma
and __utils
only.pub fn with_emitter(
can_emit_warnings: bool,
treat_err_as_bug: bool,
emitter: Box<dyn Emitter>,
) -> Handler
Available on crate features __ecma
and __utils
only.
pub fn with_emitter( can_emit_warnings: bool, treat_err_as_bug: bool, emitter: Box<dyn Emitter>, ) -> Handler
__ecma
and __utils
only.Example implementation of Emitter is EmitterWriter
pub fn with_emitter_writer(
dst: Box<dyn Write + Send>,
cm: Option<Arc<dyn SourceMapper>>,
) -> Handler
Available on crate features __ecma
and __utils
only.
pub fn with_emitter_writer( dst: Box<dyn Write + Send>, cm: Option<Arc<dyn SourceMapper>>, ) -> Handler
__ecma
and __utils
only.Calls Self::with_emitter with EmitterWriter.
pub fn with_emitter_and_flags( e: Box<dyn Emitter>, flags: HandlerFlags, ) -> Handler
__ecma
and __utils
only.pub fn set_continue_after_error(&self, continue_after_error: bool)
__ecma
and __utils
only.pub fn reset_err_count(&self)
Available on crate features __ecma
and __utils
only.
pub fn reset_err_count(&self)
__ecma
and __utils
only.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.
pub fn struct_dummy(&self) -> DiagnosticBuilder<'_>
__ecma
and __utils
only.pub fn struct_span_warn<'a, S>( &'a self, sp: S, msg: &str, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_span_warn_with_code<'a, S>( &'a self, sp: S, msg: &str, code: DiagnosticId, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_warn<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_span_err<'a, S>( &'a self, sp: S, msg: &str, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_span_err_with_code<'a, S>( &'a self, sp: S, msg: &str, code: DiagnosticId, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_err<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_err_with_code<'a>( &'a self, msg: &str, code: DiagnosticId, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_span_fatal<'a, S>( &'a self, sp: S, msg: &str, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_span_fatal_with_code<'a, S>( &'a self, sp: S, msg: &str, code: DiagnosticId, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn struct_fatal<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn cancel(&self, err: &mut DiagnosticBuilder<'_>)
__ecma
and __utils
only.pub fn span_fatal<S>(&self, sp: S, msg: &str) -> FatalError
__ecma
and __utils
only.pub fn span_fatal_with_code<S>( &self, sp: S, msg: &str, code: DiagnosticId, ) -> FatalError
__ecma
and __utils
only.pub fn span_err<S>(&self, sp: S, msg: &str)
__ecma
and __utils
only.pub fn mut_span_err<'a, S>(&'a self, sp: S, msg: &str) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn span_err_with_code<S>(&self, sp: S, msg: &str, code: DiagnosticId)
__ecma
and __utils
only.pub fn span_warn<S>(&self, sp: S, msg: &str)
__ecma
and __utils
only.pub fn span_warn_with_code<S>(&self, sp: S, msg: &str, code: DiagnosticId)
__ecma
and __utils
only.pub fn span_bug<S>(&self, sp: S, msg: &str) -> !
__ecma
and __utils
only.pub fn delay_span_bug<S>(&self, sp: S, msg: &str)
__ecma
and __utils
only.pub fn span_bug_no_panic<S>(&self, sp: S, msg: &str)
__ecma
and __utils
only.pub fn span_note_without_error<S>(&self, sp: S, msg: &str)
__ecma
and __utils
only.pub fn span_note_diag<'a>( &'a self, sp: Span, msg: &str, ) -> DiagnosticBuilder<'a>
__ecma
and __utils
only.pub fn span_unimpl<S>(&self, sp: S, msg: &str) -> !
__ecma
and __utils
only.pub fn failure(&self, msg: &str)
__ecma
and __utils
only.pub fn fatal(&self, msg: &str) -> FatalError
__ecma
and __utils
only.pub fn err(&self, msg: &str)
__ecma
and __utils
only.pub fn warn(&self, msg: &str)
__ecma
and __utils
only.pub fn note_without_error(&self, msg: &str)
__ecma
and __utils
only.pub fn bug(&self, msg: &str) -> !
__ecma
and __utils
only.pub fn unimpl(&self, msg: &str) -> !
__ecma
and __utils
only.pub fn err_count(&self) -> usize
__ecma
and __utils
only.pub fn has_errors(&self) -> bool
__ecma
and __utils
only.pub fn print_error_count(&self)
__ecma
and __utils
only.pub fn abort_if_errors(&self)
__ecma
and __utils
only.pub fn emit(&self, msp: &MultiSpan, msg: &str, lvl: Level)
__ecma
and __utils
only.pub fn emit_with_code( &self, msp: &MultiSpan, msg: &str, code: DiagnosticId, lvl: Level, )
__ecma
and __utils
only.pub fn must_teach(&self, code: &DiagnosticId) -> bool
Available on crate features __ecma
and __utils
only.
pub fn must_teach(&self, code: &DiagnosticId) -> bool
__ecma
and __utils
only.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 -Z teach
.
pub fn force_print_db(&self, db: DiagnosticBuilder<'_>)
__ecma
and __utils
only.Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Handler
impl !RefUnwindSafe for Handler
impl Send for Handler
impl Sync for Handler
impl Unpin for Handler
impl !UnwindSafe for Handler
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.