Rollup merge of #44138 - steveklabnik:rustdoc-deprecations, r=QuietMisdreavus

Deprecate several flags in rustdoc

Part of #44136

cc @rust-lang/dev-tools @rust-lang/docs

This is a very basic PR to start deprecating some flags; `rustdoc` doesn't really have fancy output options like `rustc` does, so I went with `eprintln!`. Happy to change it if people feel that's not appropriate.

Also, I have no idea if we can or should write tests here, so I didn't try. If someone feels strongly about it, then let's do it, but given that the only outcome here is a side effect...
This commit is contained in:
kennytm 2017-10-19 01:59:44 +08:00 committed by GitHub
commit ebdfe338e5
4 changed files with 44 additions and 3 deletions

View File

@ -170,6 +170,9 @@ pub fn opts() -> Vec<RustcOptGroup> {
stable("no-default", |o| {
o.optflag("", "no-defaults", "don't run the default passes")
}),
stable("document-private-items", |o| {
o.optflag("", "document-private-items", "document private items")
}),
stable("test", |o| o.optflag("", "test", "run code examples as tests")),
stable("test-args", |o| {
o.optmulti("", "test-args", "arguments to pass to the test runner",
@ -275,6 +278,9 @@ pub fn main_args(args: &[String]) -> isize {
// Check for unstable options.
nightly_options::check_nightly_options(&matches, &opts());
// check for deprecated options
check_deprecated_options(&matches);
if matches.opt_present("h") || matches.opt_present("help") {
usage("rustdoc");
return 0;
@ -458,6 +464,18 @@ where R: 'static + Send, F: 'static + Send + FnOnce(Output) -> R {
let mut passes = matches.opt_strs("passes");
let mut plugins = matches.opt_strs("plugins");
// We hardcode in the passes here, as this is a new flag and we
// are generally deprecating passes.
if matches.opt_present("document-private-items") {
default_passes = false;
passes = vec![
String::from("strip-hidden"),
String::from("collapse-docs"),
String::from("unindent-comments"),
];
}
// First, parse the crate and extract all relevant information.
let mut paths = SearchPaths::new();
for s in &matches.opt_strs("L") {
@ -550,3 +568,26 @@ where R: 'static + Send, F: 'static + Send + FnOnce(Output) -> R {
});
rx.recv().unwrap()
}
/// Prints deprecation warnings for deprecated options
fn check_deprecated_options(matches: &getopts::Matches) {
let deprecated_flags = [
"input-format",
"output-format",
"plugin-path",
"plugins",
"no-defaults",
"passes",
];
for flag in deprecated_flags.into_iter() {
if matches.opt_present(flag) {
eprintln!("WARNING: the '{}' flag is considered deprecated", flag);
eprintln!("WARNING: please see https://github.com/rust-lang/rust/issues/44136");
}
}
if matches.opt_present("no-defaults") {
eprintln!("WARNING: (you may want to use --document-private-items)");
}
}

View File

@ -9,7 +9,7 @@
// except according to those terms.
// ignore-tidy-linelength
// compile-flags: --no-defaults --passes collapse-docs --passes unindent-comments --passes strip-priv-imports
// compile-flags: --document-private-items
// @has 'empty_mod_private/index.html' '//a[@href="foo/index.html"]' 'foo'
// @has 'empty_mod_private/sidebar-items.js' 'foo'

View File

@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// compile-flags:--no-defaults --passes collapse-docs --passes unindent-comments
// compile-flags: --no-defaults --passes collapse-docs --passes unindent-comments
// @has issue_15347/fn.foo.html
#[doc(hidden)]

View File

@ -9,7 +9,7 @@
// except according to those terms.
// ignore-tidy-linelength
// compile-flags: --no-defaults --passes collapse-docs --passes unindent-comments --passes strip-priv-imports
// compile-flags: --document-private-items
#![crate_name = "foo"]