From f620b5ced22e43bf484ca02f08b09dd45a30e0a1 Mon Sep 17 00:00:00 2001 From: Camelid Date: Thu, 28 Jan 2021 18:00:07 -0800 Subject: [PATCH] rustdoc: Remove unnecessary optional Previously, the HTML output format was represented by both `Some(OutputFormat::Html)` and `None` so there's no need to have an optional. Instead, `OutputFormat::Html` is explicitly the default and we no longer have a "tri-state enum". --- src/librustdoc/config.rs | 26 ++++++++++++------- src/librustdoc/core.rs | 2 +- src/librustdoc/lib.rs | 4 +-- .../passes/calculate_doc_coverage.rs | 2 +- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 94773ac77ccb0..0b6f3b09f0c0a 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -35,6 +35,12 @@ crate enum OutputFormat { Html, } +impl Default for OutputFormat { + fn default() -> OutputFormat { + OutputFormat::Html + } +} + impl OutputFormat { crate fn is_json(&self) -> bool { matches!(self, OutputFormat::Json) @@ -118,7 +124,7 @@ crate struct Options { crate enable_per_target_ignores: bool, /// The path to a rustc-like binary to build tests with. If not set, we - /// default to loading from $sysroot/bin/rustc. + /// default to loading from `$sysroot/bin/rustc`. crate test_builder: Option, // Options that affect the documentation process @@ -142,8 +148,10 @@ crate struct Options { crate crate_version: Option, /// Collected options specific to outputting final pages. crate render_options: RenderOptions, - /// Output format rendering (used only for "show-coverage" option for the moment) - crate output_format: Option, + /// The format that we output when rendering. + /// + /// Currently used only for the `--show-coverage` option. + crate output_format: OutputFormat, /// If this option is set to `true`, rustdoc will only run checks and not generate /// documentation. crate run_check: bool, @@ -271,7 +279,7 @@ crate struct RenderInfo { crate deref_trait_did: Option, crate deref_mut_trait_did: Option, crate owned_box_did: Option, - crate output_format: Option, + crate output_format: OutputFormat, } impl Options { @@ -537,28 +545,28 @@ impl Options { let output_format = match matches.opt_str("output-format") { Some(s) => match OutputFormat::try_from(s.as_str()) { - Ok(o) => { - if o.is_json() + Ok(out_fmt) => { + if out_fmt.is_json() && !(show_coverage || nightly_options::match_is_nightly_build(matches)) { diag.struct_err("json output format isn't supported for doc generation") .emit(); return Err(1); - } else if !o.is_json() && show_coverage { + } else if !out_fmt.is_json() && show_coverage { diag.struct_err( "html output format isn't supported for the --show-coverage option", ) .emit(); return Err(1); } - Some(o) + out_fmt } Err(e) => { diag.struct_err(&e).emit(); return Err(1); } }, - None => None, + None => OutputFormat::default(), }; let crate_name = matches.opt_str("crate-name"); let proc_macro_crate = crate_types.contains(&CrateType::ProcMacro); diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 16f11e460e6f0..60dbc19483a45 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -460,7 +460,7 @@ crate fn run_global_ctxt( mut default_passes: passes::DefaultPassOption, mut manual_passes: Vec, render_options: RenderOptions, - output_format: Option, + output_format: OutputFormat, ) -> (clean::Crate, RenderInfo, RenderOptions) { // Certain queries assume that some checks were run elsewhere // (see https://github.com/rust-lang/rust/pull/73566#issuecomment-656954425), diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index c61cbf78f771a..e98cb237635fe 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -578,7 +578,7 @@ fn main_options(options: config::Options) -> MainResult { let (error_format, edition, debugging_options) = diag_opts; let diag = core::new_handler(error_format, None, &debugging_options); match output_format { - None | Some(config::OutputFormat::Html) => sess.time("render_html", || { + config::OutputFormat::Html => sess.time("render_html", || { run_renderer::>( krate, render_opts, @@ -588,7 +588,7 @@ fn main_options(options: config::Options) -> MainResult { tcx, ) }), - Some(config::OutputFormat::Json) => sess.time("render_json", || { + config::OutputFormat::Json => sess.time("render_json", || { run_renderer::>( krate, render_opts, diff --git a/src/librustdoc/passes/calculate_doc_coverage.rs b/src/librustdoc/passes/calculate_doc_coverage.rs index 61e14c0522277..cdbff62d0645c 100644 --- a/src/librustdoc/passes/calculate_doc_coverage.rs +++ b/src/librustdoc/passes/calculate_doc_coverage.rs @@ -132,7 +132,7 @@ impl<'a, 'b> CoverageCalculator<'a, 'b> { fn print_results(&self) { let output_format = self.ctx.renderinfo.borrow().output_format; - if output_format.map(|o| o.is_json()).unwrap_or_else(|| false) { + if output_format.is_json() { println!("{}", self.to_json()); return; }