aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 13:56:15 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 13:59:31 +0900
commita9bb49c7d685dd82feaf4050f756fdf590315200 (patch)
tree0242a737e8280fe9e25c38bb7a6f844d2eff623c /crates/shirabe/src/dependency_resolver
parent15b1be89eb168a30e96459c6a5307afcb7323bbc (diff)
downloadphp-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.gz
php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.zst
php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.zip
fix(compile): implement abstract class traits across all types
Implement BaseCommand trait and other abstract class traits across all command, downloader, io, package, and VCS driver types. Also fix trait method signatures for composer_mut and io_mut to return mutable references to Option rather than Option of mutable references.
Diffstat (limited to 'crates/shirabe/src/dependency_resolver')
-rw-r--r--crates/shirabe/src/dependency_resolver/generic_rule.rs57
-rw-r--r--crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs47
-rw-r--r--crates/shirabe/src/dependency_resolver/rule2_literals.rs47
3 files changed, 142 insertions, 9 deletions
diff --git a/crates/shirabe/src/dependency_resolver/generic_rule.rs b/crates/shirabe/src/dependency_resolver/generic_rule.rs
index f30d6125..23d1e3c3 100644
--- a/crates/shirabe/src/dependency_resolver/generic_rule.rs
+++ b/crates/shirabe/src/dependency_resolver/generic_rule.rs
@@ -2,19 +2,16 @@
use crate::dependency_resolver::rule::Rule;
use anyhow::Result;
-use shirabe_php_shim::{PHP_VERSION_ID, RuntimeException, hash_raw, implode, unpack};
+use shirabe_php_shim::{PHP_VERSION_ID, PhpMixed, RuntimeException, hash_raw, implode, unpack};
+
+use super::{request::Request, rule::ReasonData};
pub struct GenericRule {
- inner: Rule,
pub(crate) literals: Vec<i64>,
}
impl GenericRule {
- pub fn new(
- mut literals: Vec<i64>,
- reason: shirabe_php_shim::PhpMixed,
- reason_data: shirabe_php_shim::PhpMixed,
- ) -> Self {
+ pub fn new(mut literals: Vec<i64>, reason: PhpMixed, reason_data: PhpMixed) -> Self {
let inner = Rule::new(reason, reason_data);
literals.sort();
Self { inner, literals }
@@ -96,3 +93,49 @@ impl RuleLiterals for GenericRule {
&self.literals
}
}
+
+impl Rule for GenericRule {
+ fn bitfield(&self) -> i64 {
+ todo!()
+ }
+
+ fn bitfield_mut(&mut self) -> &mut i64 {
+ todo!()
+ }
+
+ fn request(&self) -> Option<&Request> {
+ todo!()
+ }
+
+ fn request_mut(&mut self) -> Option<&mut Request> {
+ todo!()
+ }
+
+ fn reason_data(&self) -> Option<&ReasonData> {
+ todo!()
+ }
+
+ fn reason_data_mut(&mut self) -> Option<&mut ReasonData> {
+ todo!()
+ }
+
+ fn get_literals(&self) -> Vec<i64> {
+ todo!()
+ }
+
+ fn get_hash(&self) -> PhpMixed {
+ todo!()
+ }
+
+ fn to_string(&self) -> String {
+ todo!()
+ }
+
+ fn equals(&self, rule: &dyn Rule) -> bool {
+ todo!()
+ }
+
+ fn is_assertion(&self) -> bool {
+ todo!()
+ }
+}
diff --git a/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs b/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs
index b15434e0..981a5225 100644
--- a/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs
+++ b/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs
@@ -7,7 +7,6 @@ use shirabe_php_shim::{PHP_VERSION_ID, RuntimeException, hash_raw};
#[derive(Debug)]
pub struct MultiConflictRule {
- inner: Rule,
pub(crate) literals: Vec<i64>,
}
@@ -118,3 +117,49 @@ impl RuleLiterals for MultiConflictRule {
true
}
}
+
+impl Rule for MultiConflictRule {
+ fn bitfield(&self) -> i64 {
+ todo!()
+ }
+
+ fn bitfield_mut(&mut self) -> &mut i64 {
+ todo!()
+ }
+
+ fn request(&self) -> Option<&Request> {
+ todo!()
+ }
+
+ fn request_mut(&mut self) -> Option<&mut Request> {
+ todo!()
+ }
+
+ fn reason_data(&self) -> Option<&ReasonData> {
+ todo!()
+ }
+
+ fn reason_data_mut(&mut self) -> Option<&mut ReasonData> {
+ todo!()
+ }
+
+ fn get_literals(&self) -> Vec<i64> {
+ todo!()
+ }
+
+ fn get_hash(&self) -> PhpMixed {
+ todo!()
+ }
+
+ fn to_string(&self) -> String {
+ todo!()
+ }
+
+ fn equals(&self, rule: &dyn Rule) -> bool {
+ todo!()
+ }
+
+ fn is_assertion(&self) -> bool {
+ todo!()
+ }
+}
diff --git a/crates/shirabe/src/dependency_resolver/rule2_literals.rs b/crates/shirabe/src/dependency_resolver/rule2_literals.rs
index e86c93d6..50ae77b2 100644
--- a/crates/shirabe/src/dependency_resolver/rule2_literals.rs
+++ b/crates/shirabe/src/dependency_resolver/rule2_literals.rs
@@ -5,7 +5,6 @@ use crate::dependency_resolver::rule::Rule;
#[derive(Debug)]
pub struct Rule2Literals {
- inner: Rule,
pub(crate) literal1: i64,
pub(crate) literal2: i64,
literals: Vec<i64>,
@@ -71,3 +70,49 @@ impl RuleLiterals for Rule2Literals {
&self.literals
}
}
+
+impl Rule for Rule2Literals {
+ fn bitfield(&self) -> i64 {
+ todo!()
+ }
+
+ fn bitfield_mut(&mut self) -> &mut i64 {
+ todo!()
+ }
+
+ fn request(&self) -> Option<&Request> {
+ todo!()
+ }
+
+ fn request_mut(&mut self) -> Option<&mut Request> {
+ todo!()
+ }
+
+ fn reason_data(&self) -> Option<&ReasonData> {
+ todo!()
+ }
+
+ fn reason_data_mut(&mut self) -> Option<&mut ReasonData> {
+ todo!()
+ }
+
+ fn get_literals(&self) -> Vec<i64> {
+ todo!()
+ }
+
+ fn get_hash(&self) -> PhpMixed {
+ todo!()
+ }
+
+ fn to_string(&self) -> String {
+ todo!()
+ }
+
+ fn equals(&self, rule: &dyn Rule) -> bool {
+ todo!()
+ }
+
+ fn is_assertion(&self) -> bool {
+ todo!()
+ }
+}