diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-06 12:13:20 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-06 12:13:20 +0900 |
| commit | 4bf226dd30743505707d2ad4e322d49d4258dae0 (patch) | |
| tree | c8aec6ae42a0d96e1d7682d33e4a83a2a1394de0 /crates/shirabe/src/dependency_resolver/solver_problems_exception.rs | |
| parent | 77d50de5b1ceb59945c5b34bd882dc7cdc7b87c1 (diff) | |
| download | php-shirabe-4bf226dd30743505707d2ad4e322d49d4258dae0.tar.gz php-shirabe-4bf226dd30743505707d2ad4e322d49d4258dae0.tar.zst php-shirabe-4bf226dd30743505707d2ad4e322d49d4258dae0.zip | |
refactor(solver-problems): pass reasons IndexMap directly to get_extension_problems
PHP's getExtensionProblems receives getReasons() directly; match that
instead of materializing an intermediate Vec<Vec<...>> with Rc clones.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/solver_problems_exception.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/solver_problems_exception.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs b/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs index 7aa8a46..513d4d9 100644 --- a/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs +++ b/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs @@ -70,13 +70,7 @@ impl SolverProblemsException { &self.learned_pool )? )); - // TODO(phase-b): get_reasons returns an IndexMap; flatten its values into Vec<Vec<...>>. - let reasons_vec: Vec<Vec<Rc<RefCell<Rule>>>> = problem - .get_reasons() - .values() - .map(|v| v.iter().map(|r| r.clone()).collect()) - .collect(); - missing_extensions.extend(self.get_extension_problems(reasons_vec)); + missing_extensions.extend(self.get_extension_problems(problem.get_reasons())); is_caused_by_lock = is_caused_by_lock || problem.is_caused_by_lock(repository_set, request, pool); } @@ -160,9 +154,12 @@ impl SolverProblemsException { text } - fn get_extension_problems(&self, reason_sets: Vec<Vec<Rc<RefCell<Rule>>>>) -> Vec<String> { + fn get_extension_problems( + &self, + reason_sets: &indexmap::IndexMap<i64, Vec<Rc<RefCell<Rule>>>>, + ) -> Vec<String> { let mut missing_extensions: indexmap::IndexMap<String, i64> = indexmap::IndexMap::new(); - for reason_set in reason_sets { + for reason_set in reason_sets.values() { for rule in reason_set { let required = rule.borrow().get_required_package(); if let Some(req) = required { |
