From 8c5dba294fae26c8a46a308a46676e0afff217d6 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 6 Jun 2026 03:47:55 +0900 Subject: 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, dropping the lossy re-key-by-target in the AliasPackage/RootAliasPackage constructors. Co-Authored-By: Claude Opus 4.8 --- crates/shirabe/src/package/root_alias_package.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'crates/shirabe/src/package/root_alias_package.rs') 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) { - 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); } -- cgit v1.3.1