aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/pool_optimizer.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-19 21:46:01 +0900
committernsfisis <nsfisis@gmail.com>2026-05-19 21:46:08 +0900
commit5e31fa33c3b5cf726a57a063b8e7a070869250fe (patch)
tree98522466966fa7df483cad174ab5fc03db39bc09 /crates/shirabe/src/dependency_resolver/pool_optimizer.rs
parentc839244d8d09f3036ebfee8eef7eb6b147e593ab (diff)
downloadphp-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.tar.gz
php-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.tar.zst
php-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.zip
fix(compile): fix more random compile errors
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/pool_optimizer.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/pool_optimizer.rs56
1 files changed, 29 insertions, 27 deletions
diff --git a/crates/shirabe/src/dependency_resolver/pool_optimizer.rs b/crates/shirabe/src/dependency_resolver/pool_optimizer.rs
index 5307a1c..3da36b1 100644
--- a/crates/shirabe/src/dependency_resolver/pool_optimizer.rs
+++ b/crates/shirabe/src/dependency_resolver/pool_optimizer.rs
@@ -130,9 +130,9 @@ impl PoolOptimizer {
// Keep track of alias packages for every package so if either the alias or aliased is kept
// we keep the others as they are a unit of packages really
- if let Some(alias_pkg) = (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>() {
+ if let Some(alias_pkg) = package.as_any().downcast_ref::<AliasPackage>() {
self.aliases_per_package
- .entry(alias_pkg.get_alias_of().id)
+ .entry(alias_pkg.get_alias_of().id())
.or_insert_with(Vec::new)
.push(package.clone_box());
}
@@ -175,8 +175,8 @@ impl PoolOptimizer {
}
fn mark_package_irremovable(&mut self, package: &dyn BasePackage) {
- self.irremovable_packages.insert(package.id, true);
- if let Some(alias_pkg) = (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>() {
+ self.irremovable_packages.insert(package.id(), true);
+ if let Some(alias_pkg) = package.as_any().downcast_ref::<AliasPackage>() {
// recursing here so aliasesPerPackage for the aliasOf can be checked
// and all its aliases marked as irremovable as well
self.mark_package_irremovable(alias_pkg.get_alias_of());
@@ -184,8 +184,8 @@ impl PoolOptimizer {
// PHP: foreach ($this->aliasesPerPackage[$package->id] as $aliasPackage)
let alias_ids: Vec<i64> = self
.aliases_per_package
- .get(&package.id)
- .map(|aliases| aliases.iter().map(|a| a.id).collect())
+ .get(&package.id())
+ .map(|aliases| aliases.iter().map(|a| a.id()).collect())
.unwrap_or_default();
for alias_id in alias_ids {
self.irremovable_packages.insert(alias_id, true);
@@ -197,7 +197,7 @@ impl PoolOptimizer {
let mut packages: Vec<Box<dyn BasePackage>> = vec![];
let mut removed_versions: IndexMap<String, IndexMap<String, String>> = IndexMap::new();
for package in pool.get_packages() {
- if !self.packages_to_remove.contains_key(&package.id) {
+ if !self.packages_to_remove.contains_key(&package.id()) {
packages.push(package.clone_box());
} else {
removed_versions
@@ -238,11 +238,11 @@ impl PoolOptimizer {
for package in pool.get_packages() {
// If that package was already marked irremovable, we can skip
// the entire process for it
- if self.irremovable_packages.contains_key(&package.id) {
+ if self.irremovable_packages.contains_key(&package.id()) {
continue;
}
- self.mark_package_for_removal(package.id)?;
+ self.mark_package_for_removal(package.id())?;
let dependency_hash = self.calculate_dependency_hash(package.as_ref());
@@ -311,7 +311,7 @@ impl PoolOptimizer {
.or_insert_with(Vec::new)
.push(package.clone_box());
package_identical_definition_lookup
- .entry(package.id)
+ .entry(package.id())
.or_insert_with(IndexMap::new)
.insert(
package_name.clone(),
@@ -344,7 +344,7 @@ impl PoolOptimizer {
let mut literals: Vec<i64> = vec![];
for package in packages {
- literals.push(package.id);
+ literals.push(package.id());
}
for preferred_literal in
@@ -439,13 +439,13 @@ impl PoolOptimizer {
>,
) {
// Already marked to keep
- if !self.packages_to_remove.contains_key(&package.id) {
+ if !self.packages_to_remove.contains_key(&package.id()) {
return;
}
- self.packages_to_remove.shift_remove(&package.id);
+ self.packages_to_remove.shift_remove(&package.id());
- if let Some(alias_pkg) = (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>() {
+ if let Some(alias_pkg) = package.as_any().downcast_ref::<AliasPackage>() {
// recursing here so aliasesPerPackage for the aliasOf can be checked
// and all its aliases marked to be kept as well
self.keep_package(
@@ -457,7 +457,7 @@ impl PoolOptimizer {
// record all the versions of the package group so we can list them later in Problem output
for name in package.get_names(false) {
- if let Some(per_name) = package_identical_definition_lookup.get(&package.id) {
+ if let Some(per_name) = package_identical_definition_lookup.get(&package.id()) {
if let Some(package_group_pointers) = per_name.get(&name) {
let package_group = identical_definitions_per_package
.get(&name)
@@ -466,7 +466,7 @@ impl PoolOptimizer {
if let Some(package_group) = package_group {
for pkg in package_group {
let pkg = if let Some(alias_pkg) =
- (pkg.as_any() as &dyn Any).downcast_ref::<AliasPackage>()
+ pkg.as_any().downcast_ref::<AliasPackage>()
{
if alias_pkg.get_pretty_version()
== VersionParser::DEFAULT_BRANCH_ALIAS
@@ -493,8 +493,13 @@ impl PoolOptimizer {
let alias_info: Vec<(i64, Vec<String>)> = self
.aliases_per_package
- .get(&package.id)
- .map(|aliases| aliases.iter().map(|a| (a.id, a.get_names(false))).collect())
+ .get(&package.id())
+ .map(|aliases| {
+ aliases
+ .iter()
+ .map(|a| (a.id(), a.get_names(false)))
+ .collect()
+ })
.unwrap_or_default();
for (alias_id, alias_names) in alias_info {
self.packages_to_remove.shift_remove(&alias_id);
@@ -510,7 +515,7 @@ impl PoolOptimizer {
if let Some(package_group) = package_group {
for pkg in package_group {
let pkg = if let Some(alias_pkg) =
- (pkg.as_any() as &dyn Any).downcast_ref::<AliasPackage>()
+ pkg.as_any().downcast_ref::<AliasPackage>()
{
if alias_pkg.get_pretty_version()
== VersionParser::DEFAULT_BRANCH_ALIAS
@@ -549,7 +554,7 @@ impl PoolOptimizer {
IndexMap::new();
for package in pool.get_packages() {
- let id = package.id;
+ let id = package.id();
// Do not remove irremovable packages
if self.irremovable_packages.contains_key(&id) {
@@ -557,9 +562,7 @@ impl PoolOptimizer {
}
// Do not remove a package aliased by another package, nor aliases
if self.aliases_per_package.contains_key(&id)
- || (package.as_any() as &dyn Any)
- .downcast_ref::<AliasPackage>()
- .is_some()
+ || package.as_any().downcast_ref::<AliasPackage>().is_some()
{
continue;
}
@@ -573,7 +576,7 @@ impl PoolOptimizer {
package_index
.entry(PackageInterface::get_name(package.as_ref()).to_string())
.or_insert_with(IndexMap::new)
- .insert(package.id, package.clone_box());
+ .insert(package.id(), package.clone_box());
}
for (_, package) in request.get_locked_packages() {
@@ -671,10 +674,9 @@ impl PoolOptimizer {
&self,
constraint: Box<dyn ConstraintInterface>,
) -> Vec<Box<dyn ConstraintInterface>> {
- // TODO(phase-b): Intervals::compactConstraint expects/returns ConstraintInterface
- let constraint = Intervals::compact_constraint(constraint);
+ let constraint = Intervals::compact_constraint(&*constraint).unwrap_or(constraint);
- if let Some(multi) = (constraint.as_ref() as &dyn Any).downcast_ref::<MultiConstraint>() {
+ if let Some(multi) = constraint.as_any().downcast_ref::<MultiConstraint>() {
if multi.is_disjunctive() {
// No need to call ourselves recursively here because Intervals::compactConstraint() ensures that there
// are no nested disjunctive MultiConstraint instances possible