diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-20 18:34:54 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-20 18:34:54 +0900 |
| commit | 81b9fc9d92bb74aa8428ae4db39bd84e8c16095c (patch) | |
| tree | 3efb6476d797e2a95545c4c3abba468c3e3c8d52 /crates/shirabe/src/util/config_validator.rs | |
| parent | c09cd630afb4bb0ca10e926f93bf706ca828ae85 (diff) | |
| download | php-shirabe-81b9fc9d92bb74aa8428ae4db39bd84e8c16095c.tar.gz php-shirabe-81b9fc9d92bb74aa8428ae4db39bd84e8c16095c.tar.zst php-shirabe-81b9fc9d92bb74aa8428ae4db39bd84e8c16095c.zip | |
refactor(php-shim): drop Box wrapping from PhpMixed List/Array
The List and Array variants of PhpMixed boxed their elements
unnecessarily. Store PhpMixed values directly and update all callers
accordingly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/util/config_validator.rs')
| -rw-r--r-- | crates/shirabe/src/util/config_validator.rs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/crates/shirabe/src/util/config_validator.rs b/crates/shirabe/src/util/config_validator.rs index a3f6ef7..033e6b3 100644 --- a/crates/shirabe/src/util/config_validator.rs +++ b/crates/shirabe/src/util/config_validator.rs @@ -43,7 +43,7 @@ impl ConfigValidator { .expect("config file path is always local"); let schema_result: anyhow::Result<()> = (|| -> anyhow::Result<()> { manifest = Some(match json.read()? { - PhpMixed::Array(m) => m.into_iter().map(|(k, v)| (k, *v)).collect(), + PhpMixed::Array(m) => m, _ => IndexMap::new(), }); json.validate_schema(JsonFile::LAX_SCHEMA, None)?; @@ -108,7 +108,7 @@ impl ConfigValidator { PhpMixed::List(list) => list .iter() .filter_map(|v| { - if let PhpMixed::String(s) = v.as_ref() { + if let PhpMixed::String(s) = v { Some(s.clone()) } else { None @@ -235,10 +235,10 @@ impl ConfigValidator { Some(PhpMixed::Array(m)) => m.clone(), _ => IndexMap::new(), }; - let mut packages: IndexMap<String, Box<PhpMixed>> = require; + let mut packages: IndexMap<String, PhpMixed> = require; packages.extend(require_dev); for (package, version) in &packages { - if let PhpMixed::String(version_str) = version.as_ref() + if let PhpMixed::String(version_str) = version && Preg::is_match(r"{#}", version_str) { warnings.push(format!( @@ -282,12 +282,12 @@ impl ConfigValidator { // check for empty psr-0/psr-4 namespace prefixes if let Some(PhpMixed::Array(autoload)) = manifest.get("autoload") { - if let Some(PhpMixed::Array(psr0)) = autoload.get("psr-0").map(|v| v.as_ref()) + if let Some(PhpMixed::Array(psr0)) = autoload.get("psr-0") && psr0.contains_key("") { warnings.push("Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance".to_string()); } - if let Some(PhpMixed::Array(psr4)) = autoload.get("psr-4").map(|v| v.as_ref()) + if let Some(PhpMixed::Array(psr4)) = autoload.get("psr-4") && psr4.contains_key("") { warnings.push("Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance".to_string()); @@ -310,11 +310,7 @@ impl ConfigValidator { PhpMixed::String("dummy/dummy".to_string()), ); } - let manifest_boxed: IndexMap<String, Box<PhpMixed>> = manifest_for_load - .into_iter() - .map(|(k, v)| (k, Box::new(v))) - .collect(); - match loader.load(manifest_boxed, "Composer\\Package\\CompletePackage") { + match loader.load(manifest_for_load, "Composer\\Package\\CompletePackage") { Ok(_) => {} Err(e) => { if let Some(invalid_e) = e.downcast_ref::<InvalidPackageException>() { |
