diff options
| author | Urgau <urgau@numericable.fr> | 2023-10-21 19:11:24 +0200 |
|---|---|---|
| committer | Urgau <urgau@numericable.fr> | 2023-10-27 12:02:54 +0200 |
| commit | 84a1a689ccc8eb6b8be48f3385bc9b0aeb5c71a6 (patch) | |
| tree | f3df928db0380ddf656c53d3190243d72f0f75d2 | |
| parent | 1ef96a9e06124ca3ce95f9ceb3be6f24d0e7154a (diff) | |
| download | rust-84a1a689ccc8eb6b8be48f3385bc9b0aeb5c71a6.tar.gz rust-84a1a689ccc8eb6b8be48f3385bc9b0aeb5c71a6.zip | |
Better guard against wrong input with check-cfg any()
| -rw-r--r-- | compiler/rustc_interface/src/interface.rs | 10 | ||||
| -rw-r--r-- | tests/ui/check-cfg/invalid-arguments.any_values.stderr | 2 | ||||
| -rw-r--r-- | tests/ui/check-cfg/invalid-arguments.rs | 4 | ||||
| -rw-r--r-- | tests/ui/check-cfg/invalid-arguments.unterminated.stderr | 2 |
4 files changed, 14 insertions, 4 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs index 22188925382..422c2fc65ad 100644 --- a/compiler/rustc_interface/src/interface.rs +++ b/compiler/rustc_interface/src/interface.rs @@ -311,11 +311,15 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check } if any_specified { - if !names.is_empty() || !values.is_empty() || values_any_specified { + if names.is_empty() + && values.is_empty() + && !values_specified + && !values_any_specified + { + check_cfg.exhaustive_names = false; + } else { error!("`cfg(any())` can only be provided in isolation"); } - - check_cfg.exhaustive_names = false; } else { for name in names { check_cfg diff --git a/tests/ui/check-cfg/invalid-arguments.any_values.stderr b/tests/ui/check-cfg/invalid-arguments.any_values.stderr new file mode 100644 index 00000000000..f9a9c4a6e13 --- /dev/null +++ b/tests/ui/check-cfg/invalid-arguments.any_values.stderr @@ -0,0 +1,2 @@ +error: invalid `--check-cfg` argument: `cfg(any(),values())` (`values()` cannot be specified before the names) + diff --git a/tests/ui/check-cfg/invalid-arguments.rs b/tests/ui/check-cfg/invalid-arguments.rs index 79bef89c957..a56f48e0af9 100644 --- a/tests/ui/check-cfg/invalid-arguments.rs +++ b/tests/ui/check-cfg/invalid-arguments.rs @@ -6,7 +6,7 @@ // revisions: multiple_values_any not_empty_any not_empty_values_any // revisions: values_any_missing_values values_any_before_ident ident_in_values_1 // revisions: ident_in_values_2 unknown_meta_item_1 unknown_meta_item_2 unknown_meta_item_3 -// revisions: mixed_values_any mixed_any giberich +// revisions: mixed_values_any mixed_any any_values giberich unterminated // // compile-flags: -Z unstable-options // [anything_else]compile-flags: --check-cfg=anything_else(...) @@ -29,6 +29,8 @@ // [unknown_meta_item_3]compile-flags: --check-cfg=cfg(foo,values(test())) // [mixed_values_any]compile-flags: --check-cfg=cfg(foo,values("bar",any())) // [mixed_any]compile-flags: --check-cfg=cfg(any(),values(any())) +// [any_values]compile-flags: --check-cfg=cfg(any(),values()) // [giberich]compile-flags: --check-cfg=cfg(...) +// [unterminated]compile-flags: --check-cfg=cfg( fn main() {} diff --git a/tests/ui/check-cfg/invalid-arguments.unterminated.stderr b/tests/ui/check-cfg/invalid-arguments.unterminated.stderr new file mode 100644 index 00000000000..80161a6aa0f --- /dev/null +++ b/tests/ui/check-cfg/invalid-arguments.unterminated.stderr @@ -0,0 +1,2 @@ +error: invalid `--check-cfg` argument: `cfg(` (expected `cfg(name, values("value1", "value2", ... "valueN"))`) + |
