Auto merge of #100574 - Urgau:check-cfg-warn-cfg, r=petrochenkov
Add warning against unexpected --cfg with --check-cfg This PR adds a warning when an unexpected `--cfg` is specified but not in the specified list of `--check-cfg`. This is the follow-up PR I mentioned in https://github.com/rust-lang/rust/pull/99519. r? `@petrochenkov`
This commit is contained in:
commit
47d1cdb0bc
10 changed files with 70 additions and 8 deletions
|
@ -3250,3 +3250,39 @@ impl EarlyLintPass for SpecialModuleName {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub use rustc_session::lint::builtin::UNEXPECTED_CFGS;
|
||||
|
||||
declare_lint_pass!(UnexpectedCfgs => [UNEXPECTED_CFGS]);
|
||||
|
||||
impl EarlyLintPass for UnexpectedCfgs {
|
||||
fn check_crate(&mut self, cx: &EarlyContext<'_>, _: &ast::Crate) {
|
||||
let cfg = &cx.sess().parse_sess.config;
|
||||
let check_cfg = &cx.sess().parse_sess.check_config;
|
||||
for &(name, value) in cfg {
|
||||
if let Some(names_valid) = &check_cfg.names_valid {
|
||||
if !names_valid.contains(&name) {
|
||||
cx.lookup(UNEXPECTED_CFGS, None::<MultiSpan>, |diag| {
|
||||
diag.build(fluent::lint::builtin_unexpected_cli_config_name)
|
||||
.help(fluent::lint::help)
|
||||
.set_arg("name", name)
|
||||
.emit();
|
||||
});
|
||||
}
|
||||
}
|
||||
if let Some(value) = value {
|
||||
if let Some(values) = &check_cfg.values_valid.get(&name) {
|
||||
if !values.contains(&value) {
|
||||
cx.lookup(UNEXPECTED_CFGS, None::<MultiSpan>, |diag| {
|
||||
diag.build(fluent::lint::builtin_unexpected_cli_config_value)
|
||||
.help(fluent::lint::help)
|
||||
.set_arg("name", name)
|
||||
.set_arg("value", value)
|
||||
.emit();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -146,6 +146,7 @@ macro_rules! early_lint_passes {
|
|||
IncompleteFeatures: IncompleteFeatures,
|
||||
RedundantSemicolons: RedundantSemicolons,
|
||||
UnusedDocComment: UnusedDocComment,
|
||||
UnexpectedCfgs: UnexpectedCfgs,
|
||||
]
|
||||
);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue