1
Fork 0

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

@ -362,7 +362,7 @@ pub struct CodegenContext<B: WriteBackendMethods> {
impl<B: WriteBackendMethods> CodegenContext<B> { impl<B: WriteBackendMethods> CodegenContext<B> {
pub fn create_diag_handler(&self) -> Handler { pub fn create_diag_handler(&self) -> Handler {
Handler::with_emitter(true, None, Box::new(self.diag_emitter.clone()), None) Handler::with_emitter(Box::new(self.diag_emitter.clone()))
} }
pub fn config(&self, kind: ModuleKind) -> &ModuleConfig { pub fn config(&self, kind: ModuleKind) -> &ModuleConfig {

View file

@ -1415,7 +1415,7 @@ pub fn report_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str, extra_info:
false, false,
TerminalUrl::No, TerminalUrl::No,
)); ));
let handler = rustc_errors::Handler::with_emitter(true, None, emitter, None); let handler = rustc_errors::Handler::with_emitter(emitter);
// a .span_bug or .bug call has already printed what // a .span_bug or .bug call has already printed what
// it wants to print. // it wants to print.

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 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"); handler.span_err(span, "foo");
let bytes = output.lock().unwrap(); let bytes = output.lock().unwrap();

View file

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

View file

@ -161,7 +161,7 @@ fn test_harness(file_text: &str, span_labels: Vec<SpanLabel>, expected_output: &
false, false,
TerminalUrl::No, TerminalUrl::No,
); );
let handler = Handler::with_emitter(true, None, Box::new(emitter), None); let handler = Handler::with_emitter(Box::new(emitter));
#[allow(rustc::untranslatable_diagnostic)] #[allow(rustc::untranslatable_diagnostic)]
handler.span_err(msp, "foo"); handler.span_err(msp, "foo");

View file

@ -224,7 +224,7 @@ impl ParseSess {
pub fn new(locale_resources: Vec<&'static str>, file_path_mapping: FilePathMapping) -> Self { pub fn new(locale_resources: Vec<&'static str>, file_path_mapping: FilePathMapping) -> Self {
let fallback_bundle = fallback_fluent_bundle(locale_resources, false); let fallback_bundle = fallback_fluent_bundle(locale_resources, false);
let sm = Lrc::new(SourceMap::new(file_path_mapping)); let sm = Lrc::new(SourceMap::new(file_path_mapping));
let handler = Handler::with_tty_emitter(true, Some(sm.clone()), fallback_bundle); let handler = Handler::with_tty_emitter(Some(sm.clone()), fallback_bundle);
ParseSess::with_span_handler(handler, sm) ParseSess::with_span_handler(handler, sm)
} }
@ -254,13 +254,9 @@ impl ParseSess {
pub fn with_silent_emitter(fatal_note: Option<String>) -> Self { pub fn with_silent_emitter(fatal_note: Option<String>) -> Self {
let fallback_bundle = fallback_fluent_bundle(Vec::new(), false); let fallback_bundle = fallback_fluent_bundle(Vec::new(), false);
let sm = Lrc::new(SourceMap::new(FilePathMapping::empty())); let sm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
let fatal_handler = Handler::with_tty_emitter(false, None, fallback_bundle); let fatal_handler = Handler::with_tty_emitter(None, fallback_bundle).disable_warnings();
let handler = Handler::with_emitter( let handler = Handler::with_emitter(Box::new(SilentEmitter { fatal_handler, fatal_note }))
false, .disable_warnings();
None,
Box::new(SilentEmitter { fatal_handler, fatal_note }),
None,
);
ParseSess::with_span_handler(handler, sm) ParseSess::with_span_handler(handler, sm)
} }

View file

@ -1442,11 +1442,11 @@ pub fn build_session(
); );
let emitter = default_emitter(&sopts, registry, source_map.clone(), bundle, fallback_bundle); let emitter = default_emitter(&sopts, registry, source_map.clone(), bundle, fallback_bundle);
let span_diagnostic = rustc_errors::Handler::with_emitter_and_flags( let mut span_diagnostic = rustc_errors::Handler::with_emitter(emitter)
emitter, .with_flags(sopts.unstable_opts.diagnostic_handler_flags(can_emit_warnings));
sopts.unstable_opts.diagnostic_handler_flags(can_emit_warnings), if let Some(ice_file) = ice_file {
ice_file, span_diagnostic = span_diagnostic.with_ice_file(ice_file);
); }
let self_profiler = if let SwitchWithOptPath::Enabled(ref d) = sopts.unstable_opts.self_profile let self_profiler = if let SwitchWithOptPath::Enabled(ref d) = sopts.unstable_opts.self_profile
{ {
@ -1737,7 +1737,7 @@ pub struct EarlyErrorHandler {
impl EarlyErrorHandler { impl EarlyErrorHandler {
pub fn new(output: ErrorOutputType) -> Self { pub fn new(output: ErrorOutputType) -> Self {
let emitter = mk_emitter(output); let emitter = mk_emitter(output);
Self { handler: rustc_errors::Handler::with_emitter(true, None, emitter, None) } Self { handler: rustc_errors::Handler::with_emitter(emitter) }
} }
pub fn abort_if_errors(&self) { pub fn abort_if_errors(&self) {
@ -1751,7 +1751,7 @@ impl EarlyErrorHandler {
self.handler.abort_if_errors(); self.handler.abort_if_errors();
let emitter = mk_emitter(output); let emitter = mk_emitter(output);
self.handler = Handler::with_emitter(true, None, emitter, None); self.handler = Handler::with_emitter(emitter);
} }
#[allow(rustc::untranslatable_diagnostic)] #[allow(rustc::untranslatable_diagnostic)]

View file

@ -173,11 +173,8 @@ pub(crate) fn new_handler(
} }
}; };
rustc_errors::Handler::with_emitter_and_flags( rustc_errors::Handler::with_emitter(emitter)
emitter, .with_flags(unstable_opts.diagnostic_handler_flags(true))
unstable_opts.diagnostic_handler_flags(true),
None,
)
} }
/// Parse, resolve, and typecheck the given crate. /// Parse, resolve, and typecheck the given crate.

View file

@ -587,7 +587,7 @@ pub(crate) fn make_test(
); );
// FIXME(misdreavus): pass `-Z treat-err-as-bug` to the doctest parser // FIXME(misdreavus): pass `-Z treat-err-as-bug` to the doctest parser
let handler = Handler::with_emitter(false, None, Box::new(emitter), None); let handler = Handler::with_emitter(Box::new(emitter)).disable_warnings();
let sess = ParseSess::with_span_handler(handler, sm); let sess = ParseSess::with_span_handler(handler, sm);
let mut found_main = false; let mut found_main = false;
@ -774,7 +774,7 @@ fn check_if_attr_is_complete(source: &str, edition: Edition) -> bool {
TerminalUrl::No, TerminalUrl::No,
); );
let handler = Handler::with_emitter(false, None, Box::new(emitter), None); let handler = Handler::with_emitter(Box::new(emitter)).disable_warnings();
let sess = ParseSess::with_span_handler(handler, sm); let sess = ParseSess::with_span_handler(handler, sm);
let mut parser = let mut parser =
match maybe_new_parser_from_source_str(&sess, filename, source.to_owned()) { match maybe_new_parser_from_source_str(&sess, filename, source.to_owned()) {

View file

@ -40,7 +40,7 @@ fn check_rust_syntax(
let emitter = BufferEmitter { buffer: Lrc::clone(&buffer), fallback_bundle }; let emitter = BufferEmitter { buffer: Lrc::clone(&buffer), fallback_bundle };
let sm = Lrc::new(SourceMap::new(FilePathMapping::empty())); let sm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
let handler = Handler::with_emitter(false, None, Box::new(emitter), None); let handler = Handler::with_emitter(Box::new(emitter)).disable_warnings();
let source = dox[code_block.code].to_owned(); let source = dox[code_block.code].to_owned();
let sess = ParseSess::with_span_handler(handler, sm); let sess = ParseSess::with_span_handler(handler, sm);

View file

@ -729,7 +729,7 @@ fn check_code(cx: &LateContext<'_>, text: &str, edition: Edition, span: Span) {
false, false,
TerminalUrl::No, TerminalUrl::No,
); );
let handler = Handler::with_emitter(false, None, Box::new(emitter), None); let handler = Handler::with_emitter(Box::new(emitter)).disable_warnings();
let sess = ParseSess::with_span_handler(handler, sm); let sess = ParseSess::with_span_handler(handler, sm);
let mut parser = match maybe_new_parser_from_source_str(&sess, filename, code) { let mut parser = match maybe_new_parser_from_source_str(&sess, filename, code) {

View file

@ -153,8 +153,6 @@ fn default_handler(
)) ))
}; };
Handler::with_emitter( Handler::with_emitter(
true,
None,
Box::new(SilentOnIgnoredFilesEmitter { Box::new(SilentOnIgnoredFilesEmitter {
has_non_ignorable_parser_errors: false, has_non_ignorable_parser_errors: false,
source_map, source_map,
@ -162,7 +160,6 @@ fn default_handler(
ignore_path_set, ignore_path_set,
can_reset, can_reset,
}), }),
None,
) )
} }
@ -234,7 +231,7 @@ impl ParseSess {
} }
pub(crate) fn set_silent_emitter(&mut self) { pub(crate) fn set_silent_emitter(&mut self) {
self.parse_sess.span_diagnostic = Handler::with_emitter(true, None, silent_emitter(), None); self.parse_sess.span_diagnostic = Handler::with_emitter(silent_emitter());
} }
pub(crate) fn span_to_filename(&self, span: Span) -> FileName { pub(crate) fn span_to_filename(&self, span: Span) -> FileName {