From 2cc92563256ae04bfc227b848a243acc3fcdcc20 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 17 May 2026 16:13:46 +0900 Subject: fix(compile): add Display impls and fix trait signatures Co-Authored-By: Claude Sonnet 4.6 --- .../src/dependency_resolver/generic_rule.rs | 39 +++++++++++--------- .../src/dependency_resolver/multi_conflict_rule.rs | 42 ++++++++++++---------- crates/shirabe/src/dependency_resolver/rule.rs | 1 - .../src/dependency_resolver/rule2_literals.rs | 25 ++++++++----- 4 files changed, 61 insertions(+), 46 deletions(-) (limited to 'crates/shirabe/src/dependency_resolver') diff --git a/crates/shirabe/src/dependency_resolver/generic_rule.rs b/crates/shirabe/src/dependency_resolver/generic_rule.rs index 23d1e3c..1c7f5f4 100644 --- a/crates/shirabe/src/dependency_resolver/generic_rule.rs +++ b/crates/shirabe/src/dependency_resolver/generic_rule.rs @@ -62,23 +62,6 @@ impl GenericRule { pub fn is_assertion(&self) -> bool { self.literals.len() == 1 } - - pub fn to_string(&self) -> String { - let prefix = if self.inner.is_disabled() { - "disabled(" - } else { - "(" - }; - let mut result = prefix.to_string(); - for (i, literal) in self.literals.iter().enumerate() { - if i != 0 { - result.push('|'); - } - result.push_str(&literal.to_string()); - } - result.push(')'); - result - } } pub trait RuleLiterals { @@ -139,3 +122,25 @@ impl Rule for GenericRule { todo!() } } + +impl std::fmt::Display for GenericRule { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{}", + if self.inner.is_disabled() { + "disabled(" + } else { + "(" + } + )?; + + for (i, literal) in self.literals.iter().enumerate() { + if i != 0 { + write!(f, "|")?; + } + write!(f, "{}", literal)?; + } + write!(f, ")") + } +} diff --git a/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs b/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs index ed77a19..102beaa 100644 --- a/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs +++ b/crates/shirabe/src/dependency_resolver/multi_conflict_rule.rs @@ -90,25 +90,6 @@ impl MultiConflictRule { code: 0, }.into()) } - - pub fn to_string(&self) -> String { - let mut result = if self.inner.is_disabled() { - "disabled(multi(".to_string() - } else { - "(multi(".to_string() - }; - - // TODO multi conflict? - for (i, literal) in self.literals.iter().enumerate() { - if i != 0 { - result.push('|'); - } - result.push_str(&literal.to_string()); - } - - result.push_str("))"); - result - } } impl RuleLiterals for MultiConflictRule { @@ -166,3 +147,26 @@ impl Rule for MultiConflictRule { todo!() } } + +impl std::fmt::Display for MultiConflictRule { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // TODO multi conflict? + write!( + f, + "{}", + if self.inner.is_disabled() { + "disabled(multi(" + } else { + "(multi(" + } + )?; + + for (i, literal) in self.literals.iter().enumerate() { + if i != 0 { + write!(f, "|")?; + } + write!(f, "{}", literal)?; + } + write!(f, "))") + } +} diff --git a/crates/shirabe/src/dependency_resolver/rule.rs b/crates/shirabe/src/dependency_resolver/rule.rs index 2fa7b58..654be92 100644 --- a/crates/shirabe/src/dependency_resolver/rule.rs +++ b/crates/shirabe/src/dependency_resolver/rule.rs @@ -64,7 +64,6 @@ pub trait Rule: std::fmt::Display { fn get_literals(&self) -> Vec; fn get_hash(&self) -> PhpMixed; - fn to_string(&self) -> String; fn equals(&self, rule: &dyn Rule) -> bool; fn is_assertion(&self) -> bool; diff --git a/crates/shirabe/src/dependency_resolver/rule2_literals.rs b/crates/shirabe/src/dependency_resolver/rule2_literals.rs index 364b0a6..49a3492 100644 --- a/crates/shirabe/src/dependency_resolver/rule2_literals.rs +++ b/crates/shirabe/src/dependency_resolver/rule2_literals.rs @@ -57,15 +57,6 @@ impl Rule2Literals { pub fn is_assertion(&self) -> bool { false } - - pub fn to_string(&self) -> String { - let prefix = if self.inner.is_disabled() { - "disabled(" - } else { - "(" - }; - format!("{}{}|{})", prefix, self.literal1, self.literal2) - } } impl RuleLiterals for Rule2Literals { @@ -119,3 +110,19 @@ impl Rule for Rule2Literals { todo!() } } + +impl std::fmt::Display for Rule2Literals { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{}", + if self.inner.is_disabled() { + "disabled(" + } else { + "(" + } + )?; + + write!(f, "{}|{})", self.literal1, self.literal2) + } +} -- cgit v1.3.1