aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/solver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/solver.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/solver.rs18
1 files changed, 3 insertions, 15 deletions
diff --git a/crates/shirabe/src/dependency_resolver/solver.rs b/crates/shirabe/src/dependency_resolver/solver.rs
index 3d2113e..03dd575 100644
--- a/crates/shirabe/src/dependency_resolver/solver.rs
+++ b/crates/shirabe/src/dependency_resolver/solver.rs
@@ -239,10 +239,8 @@ impl Solver {
self.io
.write_error3("Generating rules", true, crate::io::DEBUG);
let mut rule_set_generator = RuleSetGenerator::new(self.policy.clone(), self.pool.clone());
- // TODO(phase-b): get_rules_for takes Option<Rc<dyn PlatformRequirementFilterInterface>>;
- // PHP passes the filter directly. Forwarding `None` here keeps the call typecheckable.
- let _ = platform_requirement_filter.as_ref();
- self.rules = rule_set_generator.get_rules_for(request, None)?;
+ self.rules =
+ rule_set_generator.get_rules_for(request, Some(platform_requirement_filter.clone()))?;
drop(rule_set_generator);
self.check_for_root_require_problems(request, platform_requirement_filter.as_ref())?;
self.decisions = Decisions::new(self.pool.clone());
@@ -667,22 +665,12 @@ impl Solver {
seen.insert(literal.abs(), true);
}
- // TODO(phase-b): Decisions does not expose an `iter()` matching PHP's foreach.
- // Walk the decision queue directly through offsets to avoid borrowing issues
- // (we still need to call back into `&self` while iterating).
- let mut offset = 0_usize;
- while offset < self.decisions.count() {
- let decision_literal = self.decisions.at_offset(offset).0;
-
- offset += 1;
-
+ for (decision_literal, why) in self.decisions.iter() {
// skip literals that are not in this rule
if !seen.contains_key(&decision_literal.abs()) {
continue;
}
- let why = self.decisions.at_offset(offset - 1).1.clone();
-
problem.add_rule(why.clone());
self.analyze_unsolvable_rule(&mut problem, why.clone(), &mut rule_seen);