aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/request_set/lockfile.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-07 00:53:01 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-07 00:53:01 +0000
commit97f80207d0f0d13f28a419d8c92e96bb9064096a (patch)
treede416fff9bbc978434cb4c1185099151df2ac27c /lib/rubygems/request_set/lockfile.rb
parenta0b80a44101708b5d66cdd87f16c98277954a77c (diff)
downloadruby-97f80207d0f0d13f28a419d8c92e96bb9064096a.tar.gz
* lib/rubygems: Update to RubyGems 2.4.5.
* test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/request_set/lockfile.rb')
-rw-r--r--lib/rubygems/request_set/lockfile.rb29
1 files changed, 21 insertions, 8 deletions
diff --git a/lib/rubygems/request_set/lockfile.rb b/lib/rubygems/request_set/lockfile.rb
index 918aa971e5..4f2fa0933f 100644
--- a/lib/rubygems/request_set/lockfile.rb
+++ b/lib/rubygems/request_set/lockfile.rb
@@ -200,6 +200,8 @@ class Gem::RequestSet::Lockfile
platforms = @requests.map { |request| request.spec.platform }.uniq
+ platforms = platforms.sort_by { |platform| platform.to_s }
+
platforms.sort.each do |platform|
out << " #{platform}"
end
@@ -277,14 +279,7 @@ class Gem::RequestSet::Lockfile
when :bang then
get :bang
- spec = @set.sets.select { |set|
- Gem::Resolver::GitSet === set or
- Gem::Resolver::VendorSet === set
- }.map { |set|
- set.specs[name]
- }.compact.first
-
- requirements << spec.version
+ requirements << pinned_requirement(name)
when :l_paren then
get :l_paren
@@ -300,6 +295,13 @@ class Gem::RequestSet::Lockfile
end
get :r_paren
+
+ if peek[0] == :bang then
+ requirements.clear
+ requirements << pinned_requirement(name)
+
+ get :bang
+ end
end
@set.gem name, *requirements
@@ -507,6 +509,17 @@ class Gem::RequestSet::Lockfile
@tokens.first || [:EOF]
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
+
+ spec.version
+ end
+
def skip type # :nodoc:
get while not @tokens.empty? and peek.first == type
end