mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
Wire up --check-cfg to rustdoc
This commit is contained in:
parent
4e82f35492
commit
97059397ca
@ -80,6 +80,8 @@ crate struct Options {
|
||||
crate extern_strs: Vec<String>,
|
||||
/// List of `cfg` flags to hand to the compiler. Always includes `rustdoc`.
|
||||
crate cfgs: Vec<String>,
|
||||
/// List of check cfg flags to hand to the compiler.
|
||||
crate check_cfgs: Vec<String>,
|
||||
/// Codegen options to hand to the compiler.
|
||||
crate codegen_options: CodegenOptions,
|
||||
/// Codegen options strings to hand to the compiler.
|
||||
@ -172,6 +174,7 @@ impl fmt::Debug for Options {
|
||||
.field("libs", &self.libs)
|
||||
.field("externs", &FmtExterns(&self.externs))
|
||||
.field("cfgs", &self.cfgs)
|
||||
.field("check-cfgs", &self.check_cfgs)
|
||||
.field("codegen_options", &"...")
|
||||
.field("debugging_options", &"...")
|
||||
.field("target", &self.target)
|
||||
@ -506,6 +509,7 @@ impl Options {
|
||||
};
|
||||
|
||||
let cfgs = matches.opt_strs("cfg");
|
||||
let check_cfgs = matches.opt_strs("check-cfg");
|
||||
|
||||
let extension_css = matches.opt_str("e").map(|s| PathBuf::from(&s));
|
||||
|
||||
@ -677,6 +681,7 @@ impl Options {
|
||||
externs,
|
||||
extern_strs,
|
||||
cfgs,
|
||||
check_cfgs,
|
||||
codegen_options,
|
||||
codegen_options_strs,
|
||||
debugging_opts,
|
||||
|
@ -192,6 +192,7 @@ crate fn create_config(
|
||||
libs,
|
||||
externs,
|
||||
mut cfgs,
|
||||
check_cfgs,
|
||||
codegen_options,
|
||||
debugging_opts,
|
||||
target,
|
||||
@ -219,6 +220,7 @@ crate fn create_config(
|
||||
// these are definitely not part of rustdoc, but we want to warn on them anyway.
|
||||
rustc_lint::builtin::RENAMED_AND_REMOVED_LINTS.name.to_string(),
|
||||
rustc_lint::builtin::UNKNOWN_LINTS.name.to_string(),
|
||||
rustc_lint::builtin::UNEXPECTED_CFGS.name.to_string(),
|
||||
];
|
||||
lints_to_show.extend(crate::lint::RUSTDOC_LINTS.iter().map(|lint| lint.name.to_string()));
|
||||
|
||||
@ -253,7 +255,7 @@ crate fn create_config(
|
||||
interface::Config {
|
||||
opts: sessopts,
|
||||
crate_cfg: interface::parse_cfgspecs(cfgs),
|
||||
crate_check_cfg: interface::parse_check_cfg(vec![]),
|
||||
crate_check_cfg: interface::parse_check_cfg(check_cfgs),
|
||||
input,
|
||||
input_path: cpath,
|
||||
output_file: None,
|
||||
|
@ -91,7 +91,7 @@ crate fn run(options: RustdocOptions) -> Result<(), ErrorReported> {
|
||||
let config = interface::Config {
|
||||
opts: sessopts,
|
||||
crate_cfg: interface::parse_cfgspecs(cfgs),
|
||||
crate_check_cfg: interface::parse_check_cfg(vec![]),
|
||||
crate_check_cfg: interface::parse_check_cfg(options.check_cfgs.clone()),
|
||||
input,
|
||||
input_path: None,
|
||||
output_file: None,
|
||||
@ -321,6 +321,12 @@ fn run_test(
|
||||
for cfg in &rustdoc_options.cfgs {
|
||||
compiler.arg("--cfg").arg(&cfg);
|
||||
}
|
||||
if !rustdoc_options.check_cfgs.is_empty() {
|
||||
compiler.arg("-Z").arg("unstable-options");
|
||||
for check_cfg in &rustdoc_options.check_cfgs {
|
||||
compiler.arg("--check-cfg").arg(&check_cfg);
|
||||
}
|
||||
}
|
||||
if let Some(sysroot) = rustdoc_options.maybe_sysroot {
|
||||
compiler.arg("--sysroot").arg(sysroot);
|
||||
}
|
||||
|
@ -259,6 +259,7 @@ fn opts() -> Vec<RustcOptGroup> {
|
||||
o.optmulti("L", "library-path", "directory to add to crate search path", "DIR")
|
||||
}),
|
||||
stable("cfg", |o| o.optmulti("", "cfg", "pass a --cfg to rustc", "")),
|
||||
unstable("check-cfg", |o| o.optmulti("", "check-cfg", "pass a --check-cfg to rustc", "")),
|
||||
stable("extern", |o| o.optmulti("", "extern", "pass an --extern to rustc", "NAME[=PATH]")),
|
||||
unstable("extern-html-root-url", |o| {
|
||||
o.optmulti(
|
||||
|
12
src/test/rustdoc-ui/check-cfg-test.rs
Normal file
12
src/test/rustdoc-ui/check-cfg-test.rs
Normal file
@ -0,0 +1,12 @@
|
||||
// check-pass
|
||||
// compile-flags: --test --nocapture --check-cfg=values(feature,"test") -Z unstable-options
|
||||
// normalize-stderr-test: "src/test/rustdoc-ui" -> "$$DIR"
|
||||
// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR"
|
||||
// normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
|
||||
|
||||
/// The doctest will produce a warning because feature invalid is unexpected
|
||||
/// ```
|
||||
/// #[cfg(feature = "invalid")]
|
||||
/// assert!(false);
|
||||
/// ```
|
||||
pub struct Foo;
|
11
src/test/rustdoc-ui/check-cfg-test.stderr
Normal file
11
src/test/rustdoc-ui/check-cfg-test.stderr
Normal file
@ -0,0 +1,11 @@
|
||||
warning: unexpected `cfg` condition value
|
||||
--> $DIR/check-cfg-test.rs:9:7
|
||||
|
|
||||
LL | #[cfg(feature = "invalid")]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||
= note: expected values for `feature` are: test
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
6
src/test/rustdoc-ui/check-cfg-test.stdout
Normal file
6
src/test/rustdoc-ui/check-cfg-test.stdout
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
running 1 test
|
||||
test $DIR/check-cfg-test.rs - Foo (line 8) ... ok
|
||||
|
||||
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
|
||||
|
2
src/test/rustdoc-ui/check-cfg-unstable.rs
Normal file
2
src/test/rustdoc-ui/check-cfg-unstable.rs
Normal file
@ -0,0 +1,2 @@
|
||||
// check-fail
|
||||
// compile-flags: --check-cfg=names()
|
2
src/test/rustdoc-ui/check-cfg-unstable.stderr
Normal file
2
src/test/rustdoc-ui/check-cfg-unstable.stderr
Normal file
@ -0,0 +1,2 @@
|
||||
error: the `-Z unstable-options` flag must also be passed to enable the flag `check-cfg`
|
||||
|
7
src/test/rustdoc-ui/check-cfg.rs
Normal file
7
src/test/rustdoc-ui/check-cfg.rs
Normal file
@ -0,0 +1,7 @@
|
||||
// check-pass
|
||||
// compile-flags: --check-cfg=names() -Z unstable-options
|
||||
|
||||
/// uniz is nor a builtin nor pass as arguments so is unexpected
|
||||
#[cfg(uniz)]
|
||||
//~^ WARNING unexpected `cfg` condition name
|
||||
pub struct Bar;
|
10
src/test/rustdoc-ui/check-cfg.stderr
Normal file
10
src/test/rustdoc-ui/check-cfg.stderr
Normal file
@ -0,0 +1,10 @@
|
||||
warning: unexpected `cfg` condition name
|
||||
--> $DIR/check-cfg.rs:5:7
|
||||
|
|
||||
LL | #[cfg(uniz)]
|
||||
| ^^^^ help: did you mean: `unix`
|
||||
|
|
||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
Loading…
Reference in New Issue
Block a user