aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/root_alias_package.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-06 03:47:55 +0900
committernsfisis <nsfisis@gmail.com>2026-06-06 03:47:55 +0900
commit8c5dba294fae26c8a46a308a46676e0afff217d6 (patch)
tree4b5d51a82acc41ed4e49e42269dcf27b982b472a /crates/shirabe/src/package/root_alias_package.rs
parent0abd0141380aa491ad6e65c58979e2fa371e3df0 (diff)
downloadphp-shirabe-8c5dba294fae26c8a46a308a46676e0afff217d6.tar.gz
php-shirabe-8c5dba294fae26c8a46a308a46676e0afff217d6.tar.zst
php-shirabe-8c5dba294fae26c8a46a308a46676e0afff217d6.zip
fix(dependency-resolver): preserve PHP array keying for alias links
Mirror PHP's array_merge semantics in AliasPackage so self.version provide/replace/conflict links are appended under numeric keys ("0", "1", ...) instead of collapsing onto the target-name key. This keeps both the original and alias-version links and makes Pool::match's contains_key("0") check (= PHP isset($x[0])) work as intended. replace_self_version_dependencies now takes and returns IndexMap<String, Link>, dropping the lossy re-key-by-target in the AliasPackage/RootAliasPackage constructors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/root_alias_package.rs')
-rw-r--r--crates/shirabe/src/package/root_alias_package.rs13
1 files changed, 5 insertions, 8 deletions
diff --git a/crates/shirabe/src/package/root_alias_package.rs b/crates/shirabe/src/package/root_alias_package.rs
index d16cfc9..9f987eb 100644
--- a/crates/shirabe/src/package/root_alias_package.rs
+++ b/crates/shirabe/src/package/root_alias_package.rs
@@ -83,14 +83,11 @@ impl RootPackageInterface for RootAliasPackage {
}
fn set_requires(&mut self, requires: IndexMap<String, Link>) {
- let replaced = self.inner.inner.replace_self_version_dependencies(
- requires.values().cloned().collect(),
- Link::TYPE_REQUIRE,
- );
- self.inner.inner.requires = replaced
- .into_iter()
- .map(|l| (l.get_target().to_string(), l))
- .collect();
+ self.inner.inner.requires = self
+ .inner
+ .inner
+ .replace_self_version_dependencies(requires.clone(), Link::TYPE_REQUIRE);
+
self.alias_of.set_requires(requires);
}