diff options
Diffstat (limited to 'lib/rubygems/request_set/lockfile/parser.rb')
-rw-r--r-- | lib/rubygems/request_set/lockfile/parser.rb | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/rubygems/request_set/lockfile/parser.rb b/lib/rubygems/request_set/lockfile/parser.rb index 18aaadf3bb..ebea940188 100644 --- a/lib/rubygems/request_set/lockfile/parser.rb +++ b/lib/rubygems/request_set/lockfile/parser.rb @@ -1,4 +1,4 @@ -# frozen_string_literal: false +# frozen_string_literal: true class Gem::RequestSet::Lockfile::Parser ### # Parses lockfiles @@ -325,15 +325,24 @@ class Gem::RequestSet::Lockfile::Parser @tokens.peek end - def pinned_requirement name # :nodoc: - spec = @set.sets.select { |set| - Gem::Resolver::GitSet === set or - Gem::Resolver::VendorSet === set - }.map { |set| - set.specs[name] - }.compact.first + if [].respond_to? :flat_map + def pinned_requirement name # :nodoc: + requirement = Gem::Dependency.new name + specification = @set.sets.flat_map { |set| + set.find_all(requirement) + }.compact.first - spec.version + specification && specification.version + end + else # FIXME: remove when 1.8 is dropped + def pinned_requirement name # :nodoc: + requirement = Gem::Dependency.new name + specification = @set.sets.map { |set| + set.find_all(requirement) + }.flatten(1).compact.first + + specification && specification.version + end end ## @@ -343,4 +352,3 @@ class Gem::RequestSet::Lockfile::Parser @tokens.unshift token end end - |