diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2023-06-15 07:02:03 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2023-06-15 07:02:03 +0900 |
commit | c2f4b414804a4ccd3edeec87e6998beb60c002bb (patch) | |
tree | fa45b790a86a235f51e9291c5889717fcf26a4b4 /lib/bundler/vendor | |
parent | 827d66266be9feff10f71dd26fa04227423d134a (diff) |
Merge rubygems/rubygems HEAD
Pick from https://github.com/rubygems/rubygems/commit/7a7b234721c375874b7e22b1c5b14925b943f04e
Diffstat (limited to 'lib/bundler/vendor')
-rw-r--r-- | lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb | 13 |
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}" } |