summaryrefslogtreecommitdiff
path: root/lib/bundler/vendor/pub_grub
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-06-15 07:02:03 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2023-06-15 07:02:03 +0900
commitc2f4b414804a4ccd3edeec87e6998beb60c002bb (patch)
treefa45b790a86a235f51e9291c5889717fcf26a4b4 /lib/bundler/vendor/pub_grub
parent827d66266be9feff10f71dd26fa04227423d134a (diff)
Merge rubygems/rubygems HEAD
Pick from https://github.com/rubygems/rubygems/commit/7a7b234721c375874b7e22b1c5b14925b943f04e
Diffstat (limited to 'lib/bundler/vendor/pub_grub')
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
index 2cb8412cf3..4caf6b355b 100644
--- a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
+++ b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
@@ -162,7 +162,7 @@ module Bundler::PubGrub
def resolve_conflict(incompatibility)
logger.info { "conflict: #{incompatibility}" }
- new_incompatibility = false
+ new_incompatibility = nil
while !incompatibility.failure?
most_recent_term = nil
@@ -204,7 +204,7 @@ module Bundler::PubGrub
solution.backtrack(previous_level)
if new_incompatibility
- add_incompatibility(incompatibility)
+ add_incompatibility(new_incompatibility)
end
return incompatibility
@@ -219,9 +219,14 @@ module Bundler::PubGrub
new_terms << difference.invert
end
- incompatibility = Incompatibility.new(new_terms, cause: Incompatibility::ConflictCause.new(incompatibility, most_recent_satisfier.cause))
+ new_incompatibility = Incompatibility.new(new_terms, cause: Incompatibility::ConflictCause.new(incompatibility, most_recent_satisfier.cause))
- new_incompatibility = true
+ if incompatibility.to_s == new_incompatibility.to_s
+ logger.info { "!! failed to resolve conflicts, this shouldn't have happened" }
+ break
+ end
+
+ incompatibility = new_incompatibility
partially = difference ? " partially" : ""
logger.info { "! #{most_recent_term} is#{partially} satisfied by #{most_recent_satisfier.term}" }