diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-06 03:47:55 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-06 03:47:55 +0900 |
| commit | 8c5dba294fae26c8a46a308a46676e0afff217d6 (patch) | |
| tree | 4b5d51a82acc41ed4e49e42269dcf27b982b472a /crates/shirabe/src/package/root_alias_package.rs | |
| parent | 0abd0141380aa491ad6e65c58979e2fa371e3df0 (diff) | |
| download | php-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.rs | 13 |
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); } |
