mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 00:03:43 +00:00
Report unexpected_cfgs
lint in external macros
This commit is contained in:
parent
c602e9aeaa
commit
cc48194baf
@ -3185,6 +3185,7 @@ declare_lint! {
|
|||||||
pub UNEXPECTED_CFGS,
|
pub UNEXPECTED_CFGS,
|
||||||
Warn,
|
Warn,
|
||||||
"detects unexpected names and values in `#[cfg]` conditions",
|
"detects unexpected names and values in `#[cfg]` conditions",
|
||||||
|
report_in_external_macro
|
||||||
}
|
}
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
|
11
tests/ui/check-cfg/auxiliary/cfg_macro.rs
Normal file
11
tests/ui/check-cfg/auxiliary/cfg_macro.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// Inspired by https://github.com/rust-lang/cargo/issues/14775
|
||||||
|
|
||||||
|
pub fn my_lib_func() {}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! my_lib_macro {
|
||||||
|
() => {
|
||||||
|
#[cfg(my_lib_cfg)]
|
||||||
|
$crate::my_lib_func()
|
||||||
|
};
|
||||||
|
}
|
12
tests/ui/check-cfg/report-in-external-macros.rs
Normal file
12
tests/ui/check-cfg/report-in-external-macros.rs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This test checks that we emit the `unexpected_cfgs` lint even in code
|
||||||
|
// coming from an external macro.
|
||||||
|
|
||||||
|
//@ check-pass
|
||||||
|
//@ no-auto-check-cfg
|
||||||
|
//@ aux-crate: cfg_macro=cfg_macro.rs
|
||||||
|
//@ compile-flags: --check-cfg=cfg()
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
cfg_macro::my_lib_macro!();
|
||||||
|
//~^ WARNING unexpected `cfg` condition name
|
||||||
|
}
|
14
tests/ui/check-cfg/report-in-external-macros.stderr
Normal file
14
tests/ui/check-cfg/report-in-external-macros.stderr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
warning: unexpected `cfg` condition name: `my_lib_cfg`
|
||||||
|
--> $DIR/report-in-external-macros.rs:10:5
|
||||||
|
|
|
||||||
|
LL | cfg_macro::my_lib_macro!();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: expected names are: `clippy`, `debug_assertions`, `doc`, `doctest`, `fmt_debug`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows`
|
||||||
|
= help: to expect this configuration use `--check-cfg=cfg(my_lib_cfg)`
|
||||||
|
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
||||||
|
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||||
|
= note: this warning originates in the macro `cfg_macro::my_lib_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
Loading…
Reference in New Issue
Block a user