diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 64a9905b33f..bc635190f42 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -269,9 +269,9 @@ fn opts() -> Vec { let stable: fn(_, fn(&mut getopts::Options) -> &mut _) -> _ = RustcOptGroup::stable; let unstable: fn(_, fn(&mut getopts::Options) -> &mut _) -> _ = RustcOptGroup::unstable; vec![ - stable("h", |o| o.optflag("h", "help", "show this help message")), - stable("V", |o| o.optflag("V", "version", "print rustdoc's version")), - stable("v", |o| o.optflag("v", "verbose", "use verbose output")), + stable("h", |o| o.optflagmulti("h", "help", "show this help message")), + stable("V", |o| o.optflagmulti("V", "version", "print rustdoc's version")), + stable("v", |o| o.optflagmulti("v", "verbose", "use verbose output")), stable("r", |o| { o.optopt("r", "input-format", "the input type of the specified file", "[rust]") }), @@ -309,14 +309,14 @@ fn opts() -> Vec { ) }), stable("plugins", |o| o.optmulti("", "plugins", "removed", "PLUGINS")), - stable("no-default", |o| o.optflag("", "no-defaults", "don't run the default passes")), + stable("no-default", |o| o.optflagmulti("", "no-defaults", "don't run the default passes")), stable("document-private-items", |o| { - o.optflag("", "document-private-items", "document private items") + o.optflagmulti("", "document-private-items", "document private items") }), unstable("document-hidden-items", |o| { - o.optflag("", "document-hidden-items", "document items that have doc(hidden)") + o.optflagmulti("", "document-hidden-items", "document items that have doc(hidden)") }), - stable("test", |o| o.optflag("", "test", "run code examples as tests")), + stable("test", |o| o.optflagmulti("", "test", "run code examples as tests")), stable("test-args", |o| { o.optmulti("", "test-args", "arguments to pass to the test runner", "ARGS") }), @@ -386,7 +386,7 @@ fn opts() -> Vec { o.optopt("", "markdown-playground-url", "URL to send code snippets to", "URL") }), stable("markdown-no-toc", |o| { - o.optflag("", "markdown-no-toc", "don't include table of contents") + o.optflagmulti("", "markdown-no-toc", "don't include table of contents") }), stable("e", |o| { o.optopt( @@ -412,13 +412,13 @@ fn opts() -> Vec { ) }), unstable("display-warnings", |o| { - o.optflag("", "display-warnings", "to print code warnings when testing doc") + o.optflagmulti("", "display-warnings", "to print code warnings when testing doc") }), stable("crate-version", |o| { o.optopt("", "crate-version", "crate version to print into documentation", "VERSION") }), unstable("sort-modules-by-appearance", |o| { - o.optflag( + o.optflagmulti( "", "sort-modules-by-appearance", "sort modules by where they appear in the program, rather than alphabetically", @@ -495,7 +495,7 @@ fn opts() -> Vec { o.optopt("", "json", "Configure the structure of JSON diagnostics", "CONFIG") }), unstable("disable-minification", |o| { - o.optflag("", "disable-minification", "Disable minification applied on JS files") + o.optflagmulti("", "disable-minification", "Disable minification applied on JS files") }), stable("warn", |o| o.optmulti("W", "warn", "Set lint warnings", "OPT")), stable("allow", |o| o.optmulti("A", "allow", "Set lint allowed", "OPT")), @@ -523,7 +523,7 @@ fn opts() -> Vec { o.optopt("", "index-page", "Markdown file to be used as index page", "PATH") }), unstable("enable-index-page", |o| { - o.optflag("", "enable-index-page", "To enable generation of the index page") + o.optflagmulti("", "enable-index-page", "To enable generation of the index page") }), unstable("static-root-path", |o| { o.optopt( @@ -535,7 +535,7 @@ fn opts() -> Vec { ) }), unstable("disable-per-crate-search", |o| { - o.optflag( + o.optflagmulti( "", "disable-per-crate-search", "disables generating the crate selector on the search box", @@ -550,14 +550,14 @@ fn opts() -> Vec { ) }), unstable("show-coverage", |o| { - o.optflag( + o.optflagmulti( "", "show-coverage", "calculate percentage of public items with documentation", ) }), unstable("enable-per-target-ignores", |o| { - o.optflag( + o.optflagmulti( "", "enable-per-target-ignores", "parse ignore-foo for ignoring doctests on a per-target basis", @@ -582,9 +582,9 @@ fn opts() -> Vec { unstable("test-builder", |o| { o.optopt("", "test-builder", "The rustc-like binary to use as the test builder", "PATH") }), - unstable("check", |o| o.optflag("", "check", "Run rustdoc checks")), + unstable("check", |o| o.optflagmulti("", "check", "Run rustdoc checks")), unstable("generate-redirect-map", |o| { - o.optflag( + o.optflagmulti( "", "generate-redirect-map", "Generate JSON file at the top level instead of generating HTML redirection files", @@ -598,9 +598,11 @@ fn opts() -> Vec { "[unversioned-shared-resources,toolchain-shared-resources,invocation-specific]", ) }), - unstable("no-run", |o| o.optflag("", "no-run", "Compile doctests without running them")), + unstable("no-run", |o| { + o.optflagmulti("", "no-run", "Compile doctests without running them") + }), unstable("show-type-layout", |o| { - o.optflag("", "show-type-layout", "Include the memory layout of types in the docs") + o.optflagmulti("", "show-type-layout", "Include the memory layout of types in the docs") }), ] } diff --git a/src/test/rustdoc/duplicate-flags.rs b/src/test/rustdoc/duplicate-flags.rs new file mode 100644 index 00000000000..dde36df2cf5 --- /dev/null +++ b/src/test/rustdoc/duplicate-flags.rs @@ -0,0 +1,4 @@ +// compile-flags: --document-private-items --document-private-items + +// @has duplicate_flags/struct.Private.html +struct Private;