summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-11-19 09:19:19 +0100
committerGitHub <noreply@github.com>2024-11-19 09:19:19 +0100
commit47200547f3d8716fbb78f95eda7af736024bcb5e (patch)
tree4b99228d1f6687eeb29f862c0b5f078010cc1274 /tests
parent5f586efd3e5b635379f0d9fad1fdfdca5c131661 (diff)
parent79c8e64162e8992df3cee65e059e13e1bc2c4aa2 (diff)
downloadrust-47200547f3d8716fbb78f95eda7af736024bcb5e.tar.gz
rust-47200547f3d8716fbb78f95eda7af736024bcb5e.zip
Rollup merge of #132577 - Urgau:check-cfg-report-extern-macro, r=petrochenkov
Report the `unexpected_cfgs` lint in external macros

This PR marks the `unexpected_cfgs` lint as being reportable in external macros, as it's probably not the intention of the macro author to leave ineffective cfgs in the users code.

Fixes #132572

try-job: aarch64-gnu-debug
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/check-cfg/auxiliary/cfg_macro.rs11
-rw-r--r--tests/ui/check-cfg/report-in-external-macros.rs12
-rw-r--r--tests/ui/check-cfg/report-in-external-macros.stderr14
3 files changed, 37 insertions, 0 deletions
diff --git a/tests/ui/check-cfg/auxiliary/cfg_macro.rs b/tests/ui/check-cfg/auxiliary/cfg_macro.rs
new file mode 100644
index 00000000000..d68accd9202
--- /dev/null
+++ b/tests/ui/check-cfg/auxiliary/cfg_macro.rs
@@ -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()
+    };
+}
diff --git a/tests/ui/check-cfg/report-in-external-macros.rs b/tests/ui/check-cfg/report-in-external-macros.rs
new file mode 100644
index 00000000000..56550b04af3
--- /dev/null
+++ b/tests/ui/check-cfg/report-in-external-macros.rs
@@ -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
+}
diff --git a/tests/ui/check-cfg/report-in-external-macros.stderr b/tests/ui/check-cfg/report-in-external-macros.stderr
new file mode 100644
index 00000000000..11300a4e402
--- /dev/null
+++ b/tests/ui/check-cfg/report-in-external-macros.stderr
@@ -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
+