about summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuietMisdreavus <grey@quietmisdreavus.net>2019-02-21 11:10:12 -0600
committerQuietMisdreavus <grey@quietmisdreavus.net>2019-02-28 16:11:21 -0600
commita3a255990e714827601623634bbc5fd59f689f71 (patch)
tree2bcd5a9eeed74bf9568a05e3d3a7109749954134
parent5eb1ab5265402cf0a40b71a5236cfe6289e7647d (diff)
downloadrust-a3a255990e714827601623634bbc5fd59f689f71.tar.gz
rust-a3a255990e714827601623634bbc5fd59f689f71.zip
add a coverage mode for private items
-rw-r--r--src/librustdoc/config.rs14
-rw-r--r--src/librustdoc/passes/mod.rs9
2 files changed, 20 insertions, 3 deletions
diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs
index d7c6b197164..5cbcc2433ba 100644
--- a/src/librustdoc/config.rs
+++ b/src/librustdoc/config.rs
@@ -232,6 +232,10 @@ impl Options {
             for &name in passes::DEFAULT_COVERAGE_PASSES {
                 println!("{:>20}", name);
             }
+            println!("\nPasses run with `--show-coverage --document-private-items`:");
+            for &name in passes::PRIVATE_COVERAGE_PASSES {
+                println!("{:>20}", name);
+            }
             return Err(0);
         }
 
@@ -421,17 +425,21 @@ impl Options {
             }
         });
 
+        let show_coverage = matches.opt_present("show-coverage");
+        let document_private = matches.opt_present("document-private-items");
+
         let default_passes = if matches.opt_present("no-defaults") {
             passes::DefaultPassOption::None
-        } else if matches.opt_present("show-coverage") {
+        } else if show_coverage && document_private {
+            passes::DefaultPassOption::PrivateCoverage
+        } else if show_coverage {
             passes::DefaultPassOption::Coverage
-        } else if matches.opt_present("document-private-items") {
+        } else if document_private {
             passes::DefaultPassOption::Private
         } else {
             passes::DefaultPassOption::Default
         };
         let manual_passes = matches.opt_strs("passes");
-        let show_coverage = matches.opt_present("show-coverage");
 
         let crate_name = matches.opt_str("crate-name");
         let playground_url = matches.opt_str("playground-url");
diff --git a/src/librustdoc/passes/mod.rs b/src/librustdoc/passes/mod.rs
index bda63ae18fd..e36a029f975 100644
--- a/src/librustdoc/passes/mod.rs
+++ b/src/librustdoc/passes/mod.rs
@@ -106,6 +106,13 @@ pub const DEFAULT_COVERAGE_PASSES: &'static [&'static str] = &[
     "calculate-doc-coverage",
 ];
 
+/// The list of default passes run when `--doc-coverage --document-private-items` is passed to
+/// rustdoc.
+pub const PRIVATE_COVERAGE_PASSES: &'static [&'static str] = &[
+    "collect-trait-impls",
+    "calculate-doc-coverage",
+];
+
 /// A shorthand way to refer to which set of passes to use, based on the presence of
 /// `--no-defaults` or `--document-private-items`.
 #[derive(Copy, Clone, PartialEq, Eq, Debug)]
@@ -113,6 +120,7 @@ pub enum DefaultPassOption {
     Default,
     Private,
     Coverage,
+    PrivateCoverage,
     None,
 }
 
@@ -122,6 +130,7 @@ pub fn defaults(default_set: DefaultPassOption) -> &'static [&'static str] {
         DefaultPassOption::Default => DEFAULT_PASSES,
         DefaultPassOption::Private => DEFAULT_PRIVATE_PASSES,
         DefaultPassOption::Coverage => DEFAULT_COVERAGE_PASSES,
+        DefaultPassOption::PrivateCoverage => PRIVATE_COVERAGE_PASSES,
         DefaultPassOption::None => &[],
     }
 }