Struct swc_common::errors::Handler
source · [−]pub struct Handler {
pub flags: HandlerFlags,
/* private fields */
}
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
sourceimpl Handler
impl Handler
pub fn with_tty_emitter(
color_config: ColorConfig,
can_emit_warnings: bool,
treat_err_as_bug: bool,
cm: Option<Lrc<SourceMapperDyn>>
) -> Handler
pub fn with_tty_emitter_and_flags(
color_config: ColorConfig,
cm: Option<Lrc<SourceMapperDyn>>,
flags: HandlerFlags
) -> Handler
sourcepub fn with_emitter(
can_emit_warnings: bool,
treat_err_as_bug: bool,
emitter: Box<dyn Emitter>
) -> Handler
pub fn with_emitter(
can_emit_warnings: bool,
treat_err_as_bug: bool,
emitter: Box<dyn Emitter>
) -> Handler
Example implementation of Emitter is EmitterWriter
sourcepub fn with_emitter_writer(
dst: Box<dyn Write + Send>,
cm: Option<Lrc<SourceMapperDyn>>
) -> Handler
pub fn with_emitter_writer(
dst: Box<dyn Write + Send>,
cm: Option<Lrc<SourceMapperDyn>>
) -> Handler
Calls Self::with_emitter with EmitterWriter.
pub fn with_emitter_and_flags(
e: Box<dyn Emitter>,
flags: HandlerFlags
) -> Handler
pub fn set_continue_after_error(&self, continue_after_error: bool)
sourcepub fn reset_err_count(&self)
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.
pub fn struct_dummy(&self) -> DiagnosticBuilder<'_>
pub fn struct_span_warn<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str
) -> DiagnosticBuilder<'a>
pub fn struct_span_warn_with_code<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str,
code: DiagnosticId
) -> DiagnosticBuilder<'a>
pub fn struct_warn<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
pub fn struct_span_err<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str
) -> DiagnosticBuilder<'a>
pub fn struct_span_err_with_code<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str,
code: DiagnosticId
) -> DiagnosticBuilder<'a>
pub fn struct_err<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
pub fn struct_err_with_code<'a>(
&'a self,
msg: &str,
code: DiagnosticId
) -> DiagnosticBuilder<'a>
pub fn struct_span_fatal<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str
) -> DiagnosticBuilder<'a>
pub fn struct_span_fatal_with_code<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str,
code: DiagnosticId
) -> DiagnosticBuilder<'a>
pub fn struct_fatal<'a>(&'a self, msg: &str) -> DiagnosticBuilder<'a>
pub fn cancel(&self, err: &mut DiagnosticBuilder<'_>)
pub fn span_fatal<S: Into<MultiSpan>>(&self, sp: S, msg: &str) -> FatalError
pub fn span_fatal_with_code<S: Into<MultiSpan>>(
&self,
sp: S,
msg: &str,
code: DiagnosticId
) -> FatalError
pub fn span_err<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
pub fn mut_span_err<'a, S: Into<MultiSpan>>(
&'a self,
sp: S,
msg: &str
) -> DiagnosticBuilder<'a>
pub fn span_err_with_code<S: Into<MultiSpan>>(
&self,
sp: S,
msg: &str,
code: DiagnosticId
)
pub fn span_warn<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
pub fn span_warn_with_code<S: Into<MultiSpan>>(
&self,
sp: S,
msg: &str,
code: DiagnosticId
)
pub fn span_bug<S: Into<MultiSpan>>(&self, sp: S, msg: &str) -> !
pub fn delay_span_bug<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
pub fn span_bug_no_panic<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
pub fn span_note_without_error<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
pub fn span_note_diag<'a>(&'a self, sp: Span, msg: &str) -> DiagnosticBuilder<'a>
pub fn span_unimpl<S: Into<MultiSpan>>(&self, sp: S, msg: &str) -> !
pub fn failure(&self, msg: &str)
pub fn fatal(&self, msg: &str) -> FatalError
pub fn err(&self, msg: &str)
pub fn warn(&self, msg: &str)
pub fn note_without_error(&self, msg: &str)
pub fn bug(&self, msg: &str) -> !
pub fn unimpl(&self, msg: &str) -> !
pub fn err_count(&self) -> usize
pub fn has_errors(&self) -> bool
pub fn print_error_count(&self)
pub fn abort_if_errors(&self)
pub fn emit(&self, msp: &MultiSpan, msg: &str, lvl: Level)
pub fn emit_with_code(
&self,
msp: &MultiSpan,
msg: &str,
code: DiagnosticId,
lvl: Level
)
sourcepub fn must_teach(&self, code: &DiagnosticId) -> bool
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 -Z teach
.