diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-03 10:54:36 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-03 10:54:36 +0900 |
| commit | c865a24596084eec90d10860265748c93bf7eb6a (patch) | |
| tree | e22f32c6560a37ab245e3458fe3b69d89996e415 /crates/mozart-registry/src/resolver.rs | |
| parent | b60cf8d9cb6776e5df85f080b5bb3fba252e154c (diff) | |
| download | php-mozart-c865a24596084eec90d10860265748c93bf7eb6a.tar.gz php-mozart-c865a24596084eec90d10860265748c93bf7eb6a.tar.zst php-mozart-c865a24596084eec90d10860265748c93bf7eb6a.zip | |
fix(resolver): substitute self.version in pool link constraints
Composer's ArrayLoader and AliasPackage rewrite "self.version" to the
declaring package's own version when building Link objects, so a
package's replace/provide/conflict/require constraints carry a concrete
"= <version>" rather than the literal string. Mozart was passing
"self.version" through verbatim, which then failed to parse in
Pool::matches_package and caused replace_alias.test to fail to find a
provider for c/c 1.* via a/a's branch alias.
Push the substitution into make_pool_links, threading the source
package's normalized version through the call sites in resolver.rs
(packagist/inline/composer-repo) and vcs_bridge.rs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart-registry/src/resolver.rs')
| -rw-r--r-- | crates/mozart-registry/src/resolver.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/crates/mozart-registry/src/resolver.rs b/crates/mozart-registry/src/resolver.rs index e8076b4..9cc0751 100644 --- a/crates/mozart-registry/src/resolver.rs +++ b/crates/mozart-registry/src/resolver.rs @@ -409,6 +409,7 @@ fn packagist_to_pool_inputs( pretty_version: version_str.to_string(), requires: make_pool_links( package_name, + version_normalized, &pv.require .iter() .map(|(k, v)| (k.clone(), v.clone())) @@ -416,6 +417,7 @@ fn packagist_to_pool_inputs( ), replaces: make_pool_links( package_name, + version_normalized, &pv.replace .iter() .map(|(k, v)| (k.clone(), v.clone())) @@ -423,6 +425,7 @@ fn packagist_to_pool_inputs( ), provides: make_pool_links( package_name, + version_normalized, &pv.provide .iter() .map(|(k, v)| (k.clone(), v.clone())) @@ -430,6 +433,7 @@ fn packagist_to_pool_inputs( ), conflicts: make_pool_links( package_name, + version_normalized, &pv.conflict .iter() .map(|(k, v)| (k.clone(), v.clone())) |
