summaryrefslogtreecommitdiff
path: root/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-30 06:32:48 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-30 06:32:48 +0000
commit9a21c28426e1021afd0f4d7314d707d578f60256 (patch)
treead567ed7fe9d9cb24c9877070cad689a90cd8f15 /lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
parentf4b623f780b0688ebc4c99e8c27203d3e950f014 (diff)
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update
rubygems to 2.6.8. Release note of 2.6.8: https://github.com/rubygems/rubygems/commit/9fb8880976f5ab998912898b091d88aa10eb1d4a git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb')
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb b/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
index e6565119ef..54a6c3fc17 100644
--- a/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
+++ b/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
@@ -356,10 +356,14 @@ module Gem::Resolver::Molinillo
# @return [void]
def fixup_swapped_children(vertex)
payload = vertex.payload
- dep_names = dependencies_for(payload).map(&method(:name_for))
- vertex.successors.each do |succ|
- if !dep_names.include?(succ.name) && !succ.root? && succ.predecessors.to_a == [vertex]
+ deps = dependencies_for(payload).group_by(&method(:name_for))
+ vertex.outgoing_edges.each do |outgoing_edge|
+ @parent_of[outgoing_edge.requirement] = states.size - 1
+ succ = outgoing_edge.destination
+ matching_deps = Array(deps[succ.name])
+ if matching_deps.empty? && !succ.root? && succ.predecessors.to_a == [vertex]
debug(depth) { "Removing orphaned spec #{succ.name} after swapping #{name}" }
+ succ.requirements.each { |r| @parent_of.delete(r) }
activated.detach_vertex_named(succ.name)
all_successor_names = succ.recursive_successors.map(&:name)
@@ -368,7 +372,11 @@ module Gem::Resolver::Molinillo
requirement_name = name_for(requirement)
(requirement_name == succ.name) || all_successor_names.include?(requirement_name)
end
+ elsif !matching_deps.include?(outgoing_edge.requirement)
+ activated.delete_edge(outgoing_edge)
+ requirements.delete(outgoing_edge.requirement)
end
+ matching_deps.delete(outgoing_edge.requirement)
end
end