Use a builder instead of boolean/option arguments

This commit is contained in:
Oli Scherer 2023-07-25 10:27:34 +00:00
parent cf9f53c837
commit 2b444672e1
12 changed files with 45 additions and 56 deletions

View file

@ -64,7 +64,7 @@ fn test_positions(code: &str, span: (u32, u32), expected_output: SpanTestData) {
);
let span = Span::with_root_ctxt(BytePos(span.0), BytePos(span.1));
let handler = Handler::with_emitter(true, None, Box::new(je), None);
let handler = Handler::with_emitter(Box::new(je));
handler.span_err(span, "foo");
let bytes = output.lock().unwrap();

View file

@ -548,12 +548,9 @@ impl Drop for HandlerInner {
impl Handler {
pub fn with_tty_emitter(
can_emit_warnings: bool,
sm: Option<Lrc<SourceMap>>,
fallback_bundle: LazyFallbackBundle,
) -> Self {
let flags =
HandlerFlags { can_emit_warnings, treat_err_as_bug: None, ..Default::default() };
let emitter = Box::new(EmitterWriter::stderr(
ColorConfig::Auto,
sm,
@ -562,34 +559,36 @@ impl Handler {
false,
false,
None,
flags.macro_backtrace,
flags.track_diagnostics,
false,
false,
TerminalUrl::No,
));
Self::with_emitter_and_flags(emitter, flags, None)
Self::with_emitter(emitter)
}
pub fn disable_warnings(mut self) -> Self {
self.inner.get_mut().flags.can_emit_warnings = false;
self
}
pub fn with_emitter(
can_emit_warnings: bool,
treat_err_as_bug: Option<NonZeroUsize>,
emitter: Box<dyn Emitter + sync::Send>,
ice_file: Option<PathBuf>,
) -> Self {
Handler::with_emitter_and_flags(
emitter,
HandlerFlags { can_emit_warnings, treat_err_as_bug, ..Default::default() },
ice_file,
)
pub fn treat_err_as_bug(mut self, treat_err_as_bug: NonZeroUsize) -> Self {
self.inner.get_mut().flags.treat_err_as_bug = Some(treat_err_as_bug);
self
}
pub fn with_emitter_and_flags(
emitter: Box<dyn Emitter + sync::Send>,
flags: HandlerFlags,
ice_file: Option<PathBuf>,
) -> Self {
pub fn with_flags(mut self, flags: HandlerFlags) -> Self {
self.inner.get_mut().flags = flags;
self
}
pub fn with_ice_file(mut self, ice_file: PathBuf) -> Self {
self.inner.get_mut().ice_file = Some(ice_file);
self
}
pub fn with_emitter(emitter: Box<dyn Emitter + sync::Send>) -> Self {
Self {
inner: Lock::new(HandlerInner {
flags,
flags: HandlerFlags { can_emit_warnings: true, ..Default::default() },
lint_err_count: 0,
err_count: 0,
warn_count: 0,
@ -607,7 +606,7 @@ impl Handler {
check_unstable_expect_diagnostics: false,
unstable_expect_diagnostics: Vec::new(),
fulfilled_expectations: Default::default(),
ice_file,
ice_file: None,
}),
}
}