mirror of
https://github.com/rust-lang/cargo
synced 2024-10-13 11:12:25 +00:00
refactor: Consolidate feature name validation logic
This commit is contained in:
parent
58745cb1c5
commit
b0ce24a79d
|
@ -191,18 +191,6 @@ fn build_feature_map(
|
|||
|
||||
// Validate features are listed properly.
|
||||
for (feature, fvs) in &map {
|
||||
if feature.starts_with("dep:") {
|
||||
bail!(
|
||||
"feature named `{}` is not allowed to start with `dep:`",
|
||||
feature
|
||||
);
|
||||
}
|
||||
if feature.contains('/') {
|
||||
bail!(
|
||||
"feature named `{}` is not allowed to contain slashes",
|
||||
feature
|
||||
);
|
||||
}
|
||||
validate_feature_name(pkg_id, feature)?;
|
||||
for fv in fvs {
|
||||
// Find data for the referenced dependency...
|
||||
|
@ -434,6 +422,13 @@ fn validate_feature_name(pkg_id: PackageId, name: &str) -> CargoResult<()> {
|
|||
if name.is_empty() {
|
||||
bail!("feature name cannot be empty");
|
||||
}
|
||||
|
||||
if name.starts_with("dep:") {
|
||||
bail!("feature named `{name}` is not allowed to start with `dep:`",);
|
||||
}
|
||||
if name.contains('/') {
|
||||
bail!("feature named `{name}` is not allowed to contain slashes",);
|
||||
}
|
||||
let mut chars = name.chars();
|
||||
if let Some(ch) = chars.next() {
|
||||
if !(unicode_xid::UnicodeXID::is_xid_start(ch) || ch == '_' || ch.is_digit(10)) {
|
||||
|
|
Loading…
Reference in a new issue