]> git.lizzy.rs Git - rust.git/commitdiff
Add support for values() with --check-cfg
authorLoïc BRANSTETT <lolo.branstett@numericable.fr>
Fri, 25 Feb 2022 12:43:57 +0000 (13:43 +0100)
committerLoïc BRANSTETT <lolo.branstett@numericable.fr>
Thu, 3 Mar 2022 11:00:28 +0000 (12:00 +0100)
compiler/rustc_interface/src/interface.rs
compiler/rustc_session/src/config.rs
src/test/ui/check-cfg/empty-values.rs
src/test/ui/check-cfg/empty-values.stderr [deleted file]

index 7f4a4ffadec148a4474a411f6430d975c92ceda0..e7563933c88ac97a19480dab3aca8b9b875f4624 100644 (file)
@@ -207,6 +207,9 @@ macro_rules! error {
                                             "`values()` first argument must be a simple identifer"
                                         );
                                     }
+                                } else if args.is_empty() {
+                                    cfg.well_known_values = true;
+                                    continue 'specs;
                                 }
                             }
                         }
index f9b75690e375fd253c97632dfe61ebb302486813..02cfdcf86f8404ad6d7e3cf561d54cb8dcd6f5c5 100644 (file)
@@ -1025,13 +1025,19 @@ pub fn to_crate_config(cfg: FxHashSet<(String, Option<String>)>) -> CrateConfig
 pub struct CheckCfg<T = String> {
     /// The set of all `names()`, if None no name checking is performed
     pub names_valid: Option<FxHashSet<T>>,
+    /// Is well known values activated
+    pub well_known_values: bool,
     /// The set of all `values()`
     pub values_valid: FxHashMap<T, FxHashSet<T>>,
 }
 
 impl<T> Default for CheckCfg<T> {
     fn default() -> Self {
-        CheckCfg { names_valid: Default::default(), values_valid: Default::default() }
+        CheckCfg {
+            names_valid: Default::default(),
+            values_valid: Default::default(),
+            well_known_values: false,
+        }
     }
 }
 
@@ -1047,6 +1053,7 @@ fn map_data<O: Eq + Hash>(&self, f: impl Fn(&T) -> O) -> CheckCfg<O> {
                 .iter()
                 .map(|(a, b)| (f(a), b.iter().map(|b| f(b)).collect()))
                 .collect(),
+            well_known_values: self.well_known_values,
         }
     }
 }
index 38ef9e51c7a1f58f4f19d094d875b8a30fb9358d..5464846409ac97a562f3bdb4dc57ae94ef7af36c 100644 (file)
@@ -1,6 +1,6 @@
-// Check that a an empty values() is rejected
+// Check that a an empty values() pass
 //
-// check-fail
+// check-pass
 // compile-flags: --check-cfg=values() -Z unstable-options
 
 fn main() {}
diff --git a/src/test/ui/check-cfg/empty-values.stderr b/src/test/ui/check-cfg/empty-values.stderr
deleted file mode 100644 (file)
index 106d5b7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-error: invalid `--check-cfg` argument: `values()` (expected `names(name1, name2, ... nameN)` or `values(name, "value1", "value2", ... "valueN")`)
-