Use blacklist instead of whitelist

This commit is contained in:
Benedikt Werner 2019-12-05 11:53:26 +01:00
parent bee13d604d
commit a572f0f274
No known key found for this signature in database
GPG key ID: 1DBFF0F8E9E121EB

View file

@ -45,19 +45,12 @@ impl Cfg {
pub(crate) fn validate_as_target(&self) -> Result<(), ParseErrorKind> {
match self {
Cfg::Name(name) => match name.as_str() {
"unix" | "windows" => Ok(()),
_ => Err(InvalidCfgName(name.to_string())),
"test" | "debug_assertions" | "proc_macro" => Err(InvalidCfgName(name.to_string())),
_ => Ok(()),
},
Cfg::KeyPair(name, _) => match name.as_str() {
"target_arch"
| "target_feature"
| "target_os"
| "target_family"
| "target_env"
| "target_endian"
| "target_pointer_width"
| "target_vendor" => Ok(()),
_ => Err(InvalidCfgKey(name.to_string())),
"feature" => Err(InvalidCfgKey(name.to_string())),
_ => Ok(()),
},
}
}
@ -362,6 +355,7 @@ fn cfg_validate_as_target() {
assert!(p("unix").validate_as_target().is_ok());
assert!(p("windows").validate_as_target().is_ok());
assert!(p("any(not(unix), windows)").validate_as_target().is_ok());
assert!(p("foo").validate_as_target().is_ok());
assert!(p("target_arch = \"abc\"").validate_as_target().is_ok());
assert!(p("target_feature = \"abc\"").validate_as_target().is_ok());
@ -373,16 +367,17 @@ fn cfg_validate_as_target() {
.validate_as_target()
.is_ok());
assert!(p("target_vendor = \"abc\"").validate_as_target().is_ok());
assert!(p("bar = \"def\"").validate_as_target().is_ok());
assert!(p("test").validate_as_target().is_err());
assert!(p("debug_assertions").validate_as_target().is_err());
assert!(p("foo").validate_as_target().is_err());
assert!(p("proc_macro").validate_as_target().is_err());
assert!(p("any(not(debug_assertions), windows)")
.validate_as_target()
.is_err());
assert!(p("feature = \"abc\"").validate_as_target().is_err());
assert!(p("bar = \"def\"").validate_as_target().is_err());
assert!(p("any(not(feature = \"def\"))")
assert!(p("any(not(feature = \"def\"), target_arch = \"abc\")")
.validate_as_target()
.is_err());
}