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", atom),
)
.span_note(
old_span,
&format!("previous definition of `{}` here", atom),
)
.emit();
});Fields§
§flags: HandlerFlagsImplementations§
§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 err_with_code(&self, msg: &str, code: DiagnosticId)
__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.pub fn take_diagnostics(&self) -> Vec<String>
__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<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<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§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> Pointee for T
impl<T> Pointee 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.