aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 18:21:00 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 18:21:00 +0900
commit465a3a1bd96e15d7807d1bd05294299eee3427df (patch)
treedecb5e3b2db3388e8dd950713732b4d09cc2f07a
parentdb5b360d5f1ddfdc6ba7cce6704b41310b715f70 (diff)
downloadphp-shirabe-465a3a1bd96e15d7807d1bd05294299eee3427df.tar.gz
php-shirabe-465a3a1bd96e15d7807d1bd05294299eee3427df.tar.zst
php-shirabe-465a3a1bd96e15d7807d1bd05294299eee3427df.zip
fix(compile): extract constants from traits to make them dyn-compatible
-rw-r--r--crates/shirabe/src/command/fund_command.rs4
-rw-r--r--crates/shirabe/src/dependency_resolver/problem.rs34
-rw-r--r--crates/shirabe/src/dependency_resolver/rule.rs28
-rw-r--r--crates/shirabe/src/dependency_resolver/rule_set_generator.rs16
-rw-r--r--crates/shirabe/src/dependency_resolver/solver.rs6
-rw-r--r--crates/shirabe/src/package/base_package.rs12
6 files changed, 50 insertions, 50 deletions
diff --git a/crates/shirabe/src/command/fund_command.rs b/crates/shirabe/src/command/fund_command.rs
index 0d0c2ec..cffde6b 100644
--- a/crates/shirabe/src/command/fund_command.rs
+++ b/crates/shirabe/src/command/fund_command.rs
@@ -18,7 +18,7 @@ use crate::console::input::input_option::InputOption;
use crate::io::io_interface::IOInterface;
use crate::json::json_file::JsonFile;
use crate::package::alias_package::AliasPackage;
-use crate::package::base_package::BasePackage;
+use crate::package::base_package::{self, BasePackage};
use crate::package::complete_package::CompletePackage;
use crate::repository::composite_repository::CompositeRepository;
@@ -73,7 +73,7 @@ impl FundCommand {
// load all packages dev versions in parallel
let result = remote_repos.load_packages(
&packages_to_load,
- &IndexMap::from([("dev".to_string(), BasePackage::STABILITY_DEV)]),
+ &IndexMap::from([("dev".to_string(), base_package::STABILITY_DEV)]),
&IndexMap::new(),
)?;
diff --git a/crates/shirabe/src/dependency_resolver/problem.rs b/crates/shirabe/src/dependency_resolver/problem.rs
index adc2f43..bbe652d 100644
--- a/crates/shirabe/src/dependency_resolver/problem.rs
+++ b/crates/shirabe/src/dependency_resolver/problem.rs
@@ -16,7 +16,7 @@ use shirabe_semver::constraint::multi_constraint::MultiConstraint;
use crate::advisory::security_advisory::SecurityAdvisory;
use crate::dependency_resolver::pool::Pool;
use crate::dependency_resolver::request::Request;
-use crate::dependency_resolver::rule::Rule;
+use crate::dependency_resolver::rule::{self, Rule};
use crate::package::alias_package::AliasPackage;
use crate::package::base_package::BasePackage;
use crate::package::complete_package_interface::CompletePackageInterface;
@@ -81,7 +81,7 @@ impl Problem {
if reasons.len() == 1 {
let rule = reasons[0].clone();
- if rule.get_reason() != Rule::RULE_ROOT_REQUIRE {
+ if rule.get_reason() != rule::RULE_ROOT_REQUIRE {
return Err(LogicException {
message: "Single reason problems must contain a root require rule.".to_string(),
code: 0,
@@ -134,16 +134,16 @@ impl Problem {
fn get_sortable_string(&self, pool: &Pool, rule: &dyn Rule) -> String {
match rule.get_reason() {
- Rule::RULE_ROOT_REQUIRE => rule.get_reason_data().as_array().unwrap()["packageName"]
+ rule::RULE_ROOT_REQUIRE => rule.get_reason_data().as_array().unwrap()["packageName"]
.as_string()
.unwrap()
.to_string(),
- Rule::RULE_FIXED => {
+ rule::RULE_FIXED => {
// TODO(phase-b): reason_data for RULE_FIXED is `array{package: BasePackage}`.
// PHP: (string) $rule->getReasonData()['package']
php_to_string(rule.get_reason_data().as_array().unwrap()["package"].as_ref())
}
- Rule::RULE_PACKAGE_CONFLICT | Rule::RULE_PACKAGE_REQUIRES => {
+ rule::RULE_PACKAGE_CONFLICT | rule::RULE_PACKAGE_REQUIRES => {
// TODO(phase-b): reason_data is a Link.
let source = rule.get_source_package(pool);
format!(
@@ -152,10 +152,10 @@ impl Problem {
rule.get_reason_data_as_link().get_pretty_string(&source)
)
}
- Rule::RULE_PACKAGE_SAME_NAME
- | Rule::RULE_PACKAGE_ALIAS
- | Rule::RULE_PACKAGE_INVERSE_ALIAS => php_to_string(&rule.get_reason_data()),
- Rule::RULE_LEARNED => implode(
+ rule::RULE_PACKAGE_SAME_NAME
+ | rule::RULE_PACKAGE_ALIAS
+ | rule::RULE_PACKAGE_INVERSE_ALIAS => php_to_string(&rule.get_reason_data()),
+ rule::RULE_LEARNED => implode(
"-",
&rule
.get_literals()
@@ -172,13 +172,13 @@ impl Problem {
fn get_rule_priority(&self, rule: &dyn Rule) -> i64 {
match rule.get_reason() {
- Rule::RULE_FIXED => 3,
- Rule::RULE_ROOT_REQUIRE => 2,
- Rule::RULE_PACKAGE_CONFLICT | Rule::RULE_PACKAGE_REQUIRES => 1,
- Rule::RULE_PACKAGE_SAME_NAME
- | Rule::RULE_LEARNED
- | Rule::RULE_PACKAGE_ALIAS
- | Rule::RULE_PACKAGE_INVERSE_ALIAS => 0,
+ rule::RULE_FIXED => 3,
+ rule::RULE_ROOT_REQUIRE => 2,
+ rule::RULE_PACKAGE_CONFLICT | rule::RULE_PACKAGE_REQUIRES => 1,
+ rule::RULE_PACKAGE_SAME_NAME
+ | rule::RULE_LEARNED
+ | rule::RULE_PACKAGE_ALIAS
+ | rule::RULE_PACKAGE_INVERSE_ALIAS => 0,
_ => {
// @phpstan-ignore deadCode.unreachable
panic!("Unknown rule type: {}", rule.get_reason());
@@ -202,7 +202,7 @@ impl Problem {
IndexMap::new();
let parser = VersionParser::new();
let deduplicatable_rule_types =
- vec![Rule::RULE_PACKAGE_REQUIRES, Rule::RULE_PACKAGE_CONFLICT];
+ vec![rule::RULE_PACKAGE_REQUIRES, rule::RULE_PACKAGE_CONFLICT];
for rule in rules {
let mut message = rule.get_pretty_string(
repository_set,
diff --git a/crates/shirabe/src/dependency_resolver/rule.rs b/crates/shirabe/src/dependency_resolver/rule.rs
index eb8d2a0..d1ec5c9 100644
--- a/crates/shirabe/src/dependency_resolver/rule.rs
+++ b/crates/shirabe/src/dependency_resolver/rule.rs
@@ -39,22 +39,22 @@ pub enum ReasonData {
},
}
-pub trait Rule: std::fmt::Display {
- // reason constants and // their reason data contents
- const RULE_ROOT_REQUIRE: i64 = 2;
- const RULE_FIXED: i64 = 3;
- const RULE_PACKAGE_CONFLICT: i64 = 6;
- const RULE_PACKAGE_REQUIRES: i64 = 7;
- const RULE_PACKAGE_SAME_NAME: i64 = 10;
- const RULE_LEARNED: i64 = 12;
- const RULE_PACKAGE_ALIAS: i64 = 13;
- const RULE_PACKAGE_INVERSE_ALIAS: i64 = 14;
+// reason constants and // their reason data contents
+pub const RULE_ROOT_REQUIRE: i64 = 2;
+pub const RULE_FIXED: i64 = 3;
+pub const RULE_PACKAGE_CONFLICT: i64 = 6;
+pub const RULE_PACKAGE_REQUIRES: i64 = 7;
+pub const RULE_PACKAGE_SAME_NAME: i64 = 10;
+pub const RULE_LEARNED: i64 = 12;
+pub const RULE_PACKAGE_ALIAS: i64 = 13;
+pub const RULE_PACKAGE_INVERSE_ALIAS: i64 = 14;
- // bitfield defs
- const BITFIELD_TYPE: i64 = 0;
- const BITFIELD_REASON: i64 = 8;
- const BITFIELD_DISABLED: i64 = 16;
+// bitfield defs
+pub const BITFIELD_TYPE: i64 = 0;
+pub const BITFIELD_REASON: i64 = 8;
+pub const BITFIELD_DISABLED: i64 = 16;
+pub trait Rule: std::fmt::Display {
fn bitfield(&self) -> i64;
fn bitfield_mut(&mut self) -> &mut i64;
fn request(&self) -> Option<&Request>;
diff --git a/crates/shirabe/src/dependency_resolver/rule_set_generator.rs b/crates/shirabe/src/dependency_resolver/rule_set_generator.rs
index fb74a70..d1f1f5b 100644
--- a/crates/shirabe/src/dependency_resolver/rule_set_generator.rs
+++ b/crates/shirabe/src/dependency_resolver/rule_set_generator.rs
@@ -11,7 +11,7 @@ use crate::dependency_resolver::multi_conflict_rule::MultiConflictRule;
use crate::dependency_resolver::policy_interface::PolicyInterface;
use crate::dependency_resolver::pool::Pool;
use crate::dependency_resolver::request::Request;
-use crate::dependency_resolver::rule::Rule;
+use crate::dependency_resolver::rule::{self, Rule};
use crate::dependency_resolver::rule_set::RuleSet;
use crate::dependency_resolver::rule2_literals::Rule2Literals;
use crate::filter::platform_requirement_filter::ignore_list_platform_requirement_filter::IgnoreListPlatformRequirementFilter;
@@ -182,7 +182,7 @@ impl RuleSetGenerator {
let rule = self.create_require_rule(
&*package,
&[alias_of.clone_box()],
- Rule::RULE_PACKAGE_ALIAS,
+ rule::RULE_PACKAGE_ALIAS,
PhpMixed::Null, // reasonData: $package (BasePackage)
);
self.add_rule(RuleSet::TYPE_PACKAGE, rule.map(Rule::from));
@@ -191,7 +191,7 @@ impl RuleSetGenerator {
let inverse_rule = self.create_require_rule(
alias_of,
&[package.clone_box()],
- Rule::RULE_PACKAGE_INVERSE_ALIAS,
+ rule::RULE_PACKAGE_INVERSE_ALIAS,
PhpMixed::Null, // reasonData: $package->getAliasOf() (BasePackage)
);
self.add_rule(RuleSet::TYPE_PACKAGE, inverse_rule.map(Rule::from));
@@ -220,7 +220,7 @@ impl RuleSetGenerator {
let rule = self.create_require_rule(
&*package,
&possible_requires,
- Rule::RULE_PACKAGE_REQUIRES,
+ rule::RULE_PACKAGE_REQUIRES,
PhpMixed::Null, // reasonData: $link (Link)
);
self.add_rule(RuleSet::TYPE_PACKAGE, rule.map(Rule::from));
@@ -271,7 +271,7 @@ impl RuleSetGenerator {
let rule = self.create_rule2_literals(
&**package,
&**conflict,
- Rule::RULE_PACKAGE_CONFLICT,
+ rule::RULE_PACKAGE_CONFLICT,
PhpMixed::Null, // reasonData: $link (Link)
);
self.add_rule(RuleSet::TYPE_PACKAGE, rule.map(Rule::from));
@@ -288,7 +288,7 @@ impl RuleSetGenerator {
for (name, packages) in names_packages {
if packages.len() > 1 {
- let reason = Rule::RULE_PACKAGE_SAME_NAME;
+ let reason = rule::RULE_PACKAGE_SAME_NAME;
let rule =
self.create_multi_conflict_rule(&packages, reason, PhpMixed::String(name));
self.add_rule(RuleSet::TYPE_PACKAGE, Some(rule));
@@ -327,7 +327,7 @@ impl RuleSetGenerator {
);
let rule = self.create_install_one_of_rule(
&[package.clone_box()],
- Rule::RULE_FIXED,
+ rule::RULE_FIXED,
PhpMixed::Array(reason_data),
);
self.add_rule(RuleSet::TYPE_REQUEST, Some(Rule::from(rule)));
@@ -362,7 +362,7 @@ impl RuleSetGenerator {
);
let rule = self.create_install_one_of_rule(
&packages,
- Rule::RULE_ROOT_REQUIRE,
+ rule::RULE_ROOT_REQUIRE,
PhpMixed::Array(reason_data),
);
self.add_rule(RuleSet::TYPE_REQUEST, Some(Rule::from(rule)));
diff --git a/crates/shirabe/src/dependency_resolver/solver.rs b/crates/shirabe/src/dependency_resolver/solver.rs
index d5f4ccd..b26c289 100644
--- a/crates/shirabe/src/dependency_resolver/solver.rs
+++ b/crates/shirabe/src/dependency_resolver/solver.rs
@@ -15,7 +15,7 @@ use crate::dependency_resolver::policy_interface::PolicyInterface;
use crate::dependency_resolver::pool::Pool;
use crate::dependency_resolver::problem::Problem;
use crate::dependency_resolver::request::Request;
-use crate::dependency_resolver::rule::Rule;
+use crate::dependency_resolver::rule::{self, Rule};
use crate::dependency_resolver::rule_set::RuleSet;
use crate::dependency_resolver::rule_set_generator::RuleSetGenerator;
use crate::dependency_resolver::rule_watch_graph::RuleWatchGraph;
@@ -206,7 +206,7 @@ impl Solver {
reason_data.insert("constraint".to_string(), PhpMixed::Null);
problem.add_rule(Rule::generic(GenericRule::new(
Vec::new(),
- PhpMixed::Int(Rule::RULE_ROOT_REQUIRE),
+ PhpMixed::Int(rule::RULE_ROOT_REQUIRE),
PhpMixed::Array(
reason_data
.into_iter()
@@ -590,7 +590,7 @@ impl Solver {
array_unshift::<i64>(&mut other_learned_literals, learned_literal);
let new_rule = GenericRule::new(
other_learned_literals,
- PhpMixed::Int(Rule::RULE_LEARNED),
+ PhpMixed::Int(rule::RULE_LEARNED),
PhpMixed::Int(why),
);
diff --git a/crates/shirabe/src/package/base_package.rs b/crates/shirabe/src/package/base_package.rs
index eb6cc90..af31bb4 100644
--- a/crates/shirabe/src/package/base_package.rs
+++ b/crates/shirabe/src/package/base_package.rs
@@ -66,13 +66,13 @@ pub static STABILITIES: LazyLock<IndexMap<&'static str, i64>> = LazyLock::new(||
m
});
-pub trait BasePackage: PackageInterface + std::fmt::Display {
- const STABILITY_STABLE: i64 = 0;
- const STABILITY_RC: i64 = 5;
- const STABILITY_BETA: i64 = 10;
- const STABILITY_ALPHA: i64 = 15;
- const STABILITY_DEV: i64 = 20;
+pub const STABILITY_STABLE: i64 = 0;
+pub const STABILITY_RC: i64 = 5;
+pub const STABILITY_BETA: i64 = 10;
+pub const STABILITY_ALPHA: i64 = 15;
+pub const STABILITY_DEV: i64 = 20;
+pub trait BasePackage: PackageInterface + std::fmt::Display {
fn id(&self) -> i64;
fn id_mut(&mut self) -> &mut i64;
fn name(&self) -> &str;