aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/rule.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 17:44:03 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 17:44:03 +0900
commit1fe1cd3fe9da3f34d8529a0c4cc89fdc61af5065 (patch)
tree1303e9577e4fc580805fc9ab435bb8f90801233e /crates/shirabe/src/dependency_resolver/rule.rs
parentcb2adb32c90b4150c96518ec5be152be70bcb792 (diff)
downloadphp-shirabe-1fe1cd3fe9da3f34d8529a0c4cc89fdc61af5065.tar.gz
php-shirabe-1fe1cd3fe9da3f34d8529a0c4cc89fdc61af5065.tar.zst
php-shirabe-1fe1cd3fe9da3f34d8529a0c4cc89fdc61af5065.zip
fix(compile): add dyn keyword to all trait object usages (E0782)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/rule.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/rule.rs33
1 files changed, 18 insertions, 15 deletions
diff --git a/crates/shirabe/src/dependency_resolver/rule.rs b/crates/shirabe/src/dependency_resolver/rule.rs
index 654be92..eb8d2a0 100644
--- a/crates/shirabe/src/dependency_resolver/rule.rs
+++ b/crates/shirabe/src/dependency_resolver/rule.rs
@@ -27,7 +27,7 @@ use crate::repository::repository_set::RepositorySet;
#[derive(Debug)]
pub enum ReasonData {
Link(Link),
- BasePackage(Box<BasePackage>),
+ BasePackage(Box<dyn BasePackage>),
String(String),
Int(i64),
RootRequire {
@@ -35,7 +35,7 @@ pub enum ReasonData {
constraint: Box<dyn ConstraintInterface>,
},
Fixed {
- package: Box<BasePackage>,
+ package: Box<dyn BasePackage>,
},
}
@@ -151,7 +151,7 @@ pub trait Rule: std::fmt::Display {
// TODO(phase-b): Request::get_locked_repository() signature
if let Some(locked_repo) = todo!("request.get_locked_repository()") {
for package in todo!("locked_repo.get_packages()") {
- let p: &BasePackage = todo!("package as BasePackage reference");
+ let p: &dyn BasePackage = todo!("package as BasePackage reference");
if p.get_name() == link.get_target() {
if pool.is_unacceptable_fixed_or_locked_package(p) {
return true;
@@ -186,7 +186,7 @@ pub trait Rule: std::fmt::Display {
// TODO(phase-b): Request::get_locked_repository() signature
if let Some(locked_repo) = todo!("request.get_locked_repository()") {
for package in todo!("locked_repo.get_packages()") {
- let p: &BasePackage = todo!("package as BasePackage reference");
+ let p: &dyn BasePackage = todo!("package as BasePackage reference");
if p.get_name() == package_name {
if pool.is_unacceptable_fixed_or_locked_package(p) {
return true;
@@ -205,7 +205,7 @@ pub trait Rule: std::fmt::Display {
}
/// @internal
- fn get_source_package(&self, pool: &Pool) -> Result<Box<BasePackage>> {
+ fn get_source_package(&self, pool: &Pool) -> Result<Box<dyn BasePackage>> {
let literals = self.get_literals();
match self.get_reason() {
@@ -250,7 +250,7 @@ pub trait Rule: std::fmt::Display {
request: &Request,
pool: &mut Pool,
is_verbose: bool,
- installed_map: IndexMap<i64, Box<BasePackage>>,
+ installed_map: IndexMap<i64, Box<dyn BasePackage>>,
_learned_pool: IndexMap<i64, Vec<Box<dyn Rule>>>,
) -> String {
let mut literals = self.get_literals();
@@ -277,7 +277,7 @@ pub trait Rule: std::fmt::Display {
}
// PHP: array_values(array_filter($packages, fn ($p) => !($p instanceof AliasPackage)))
- let packages_non_alias: Vec<Box<BasePackage>> = packages
+ let packages_non_alias: Vec<Box<dyn BasePackage>> = packages
.iter()
.filter(|p| {
(p.as_any() as &dyn Any)
@@ -409,7 +409,7 @@ pub trait Rule: std::fmt::Display {
_ => return String::new(),
};
- let mut requires: Vec<Box<BasePackage>> = vec![];
+ let mut requires: Vec<Box<dyn BasePackage>> = vec![];
for literal in &literals {
requires.push(pool.literal_to_package(*literal));
}
@@ -479,8 +479,8 @@ pub trait Rule: std::fmt::Display {
reason_str
};
- let mut installed_packages: Vec<Box<BasePackage>> = vec![];
- let mut removable_packages: Vec<Box<BasePackage>> = vec![];
+ let mut installed_packages: Vec<Box<dyn BasePackage>> = vec![];
+ let mut removable_packages: Vec<Box<dyn BasePackage>> = vec![];
for literal in &literals {
if installed_map.contains_key(&abs(*literal)) {
installed_packages.push(pool.literal_to_package(*literal));
@@ -534,7 +534,7 @@ pub trait Rule: std::fmt::Display {
let rule_text = if literals.len() == 1 {
pool.literal_to_pretty_string(literals[0], &installed_map)
} else {
- let mut groups: IndexMap<String, Vec<Box<BasePackage>>> = IndexMap::new();
+ let mut groups: IndexMap<String, Vec<Box<dyn BasePackage>>> = IndexMap::new();
for literal in &literals {
let package = pool.literal_to_package(*literal);
let group = if installed_map.contains_key(&package.id) {
@@ -624,12 +624,12 @@ pub trait Rule: std::fmt::Display {
fn format_packages_unique(
&self,
pool: &Pool,
- literals_or_packages: Vec<Box<BasePackage>>,
+ literals_or_packages: Vec<Box<dyn BasePackage>>,
is_verbose: bool,
constraint: Option<&dyn ConstraintInterface>,
use_removed_version_group: bool,
) -> String {
- let mut packages: Vec<Box<BasePackage>> = vec![];
+ let mut packages: Vec<Box<dyn BasePackage>> = vec![];
for package in literals_or_packages {
// PHP: \is_object($package) ? $package : $pool->literalToPackage($package);
// In Rust we already have BasePackage, so no conversion needed.
@@ -654,7 +654,7 @@ pub trait Rule: std::fmt::Display {
constraint: Option<&dyn ConstraintInterface>,
use_removed_version_group: bool,
) -> String {
- let mut packages: Vec<Box<BasePackage>> = vec![];
+ let mut packages: Vec<Box<dyn BasePackage>> = vec![];
for literal in literals {
packages.push(pool.literal_to_package(*literal).clone_box());
}
@@ -667,7 +667,10 @@ pub trait Rule: std::fmt::Display {
)
}
- fn deduplicate_default_branch_alias(&self, package: Box<BasePackage>) -> Box<BasePackage> {
+ fn deduplicate_default_branch_alias(
+ &self,
+ package: Box<dyn BasePackage>,
+ ) -> Box<dyn BasePackage> {
if let Some(alias_pkg) = (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>() {
if alias_pkg.get_pretty_version() == VersionParser::DEFAULT_BRANCH_ALIAS {
return alias_pkg.get_alias_of().clone_box();