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 f30d612..23d1e3c 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 b15434e..981a522 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 e86c93d..50ae77b 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!()
+ }
+}