Skip to content

Commit f525dae

Browse files
authored
Merge pull request #86 from CocoaPods/multiple-primary-unwinds
Handle case of multiple previous primary unwinds to the same state
2 parents 4a8ea77 + a57eefd commit f525dae

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88

99
##### Bug Fixes
1010

11-
* None.
11+
* Handle the case where an unwind occurs to a requirement that directly caused
12+
the current conflict but could also have been unwound to directly from
13+
previous conflicts. In this case, filtering must not remove any possibilities
14+
that could have avoided the previous conflicts (even if they would not avoid
15+
the current one).
16+
[Grey Baker](https://github.com/greysteil)
1217

1318

1419
## 0.6.2 (2017-08-25)

lib/molinillo/resolution.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,15 @@ def filter_possibilities_after_unwind(unwind_details)
461461
# @param [UnwindDetails] details of the conflict just unwound from
462462
# @return [void]
463463
def filter_possibilities_for_primary_unwind(unwind_details)
464-
all_requirements = unwind_details.conflicting_requirements
464+
unwinds_to_state = unused_unwind_options.select { |uw| uw.state_index == unwind_details.state_index }
465+
unwinds_to_state << unwind_details
466+
unwind_requirement_sets = unwinds_to_state.map(&:conflicting_requirements)
465467

466468
state.possibilities.reject! do |possibility_set|
467469
possibility_set.possibilities.none? do |poss|
468-
possibility_satisfies_requirements?(poss, all_requirements)
470+
unwind_requirement_sets.any? do |requirements|
471+
possibility_satisfies_requirements?(poss, requirements)
472+
end
469473
end
470474
end
471475
end

0 commit comments

Comments
 (0)