From a51b13042e48c40a87597496fac01dc605aca55d Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 12 Nov 2020 14:57:44 +0100 Subject: [PATCH] Add --check option to rustdoc --- src/librustdoc/config.rs | 6 ++++++ src/librustdoc/lib.rs | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 02885f51936..c248d57a9dd 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -145,6 +145,9 @@ pub struct Options { pub render_options: RenderOptions, /// Output format rendering (used only for "show-coverage" option for the moment) pub output_format: Option, + /// If this option is set to `true`, rustdoc will only run checks and not generate + /// documentation. + pub run_check: bool, } impl fmt::Debug for Options { @@ -185,6 +188,7 @@ impl fmt::Debug for Options { .field("runtool", &self.runtool) .field("runtool_args", &self.runtool_args) .field("enable-per-target-ignores", &self.enable_per_target_ignores) + .field("run_check", &self.run_check) .finish() } } @@ -581,6 +585,7 @@ impl Options { let enable_per_target_ignores = matches.opt_present("enable-per-target-ignores"); let document_private = matches.opt_present("document-private-items"); let document_hidden = matches.opt_present("document-hidden-items"); + let run_check = matches.opt_present("check"); let (lint_opts, describe_lints, lint_cap) = get_cmd_lint_options(matches, error_format); @@ -616,6 +621,7 @@ impl Options { runtool_args, enable_per_target_ignores, test_builder, + run_check, render_options: RenderOptions { output, external_html, diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 7efbca5c6c3..d23c722e78e 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -423,6 +423,7 @@ fn opts() -> Vec { "specified the rustc-like binary to use as the test builder", ) }), + unstable("check", |o| o.optflag("", "check", "Run rustdoc checks")), ] } @@ -514,6 +515,7 @@ fn main_options(options: config::Options) -> MainResult { // but we can't crates the Handler ahead of time because it's not Send let diag_opts = (options.error_format, options.edition, options.debugging_opts.clone()); let show_coverage = options.show_coverage; + let run_check = options.run_check; // First, parse the crate and extract all relevant information. info!("starting to run rustc"); @@ -539,6 +541,9 @@ fn main_options(options: config::Options) -> MainResult { // if we ran coverage, bail early, we don't need to also generate docs at this point // (also we didn't load in any of the useful passes) return Ok(()); + } else if run_check { + // Since we're in "check" mode, no need to generate anything beyond this point. + return Ok(()); } info!("going to format");