summaryrefslogtreecommitdiff
path: root/lib/rubygems/requirement.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-30 13:01:35 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-30 13:01:35 +0000
commit8da8d4b043c37b53a69803c71ff36b478d4776d0 (patch)
tree7c8cec15645e74f19c88e4eb5b210b96174c7d03 /lib/rubygems/requirement.rb
parentc5cb386eba6d9a2d9a8e6ffa8c30137d0c4660c1 (diff)
Merge RubyGems 3.0.0.beta1.
* It drop to support < Ruby 2.2 * Cleanup deprecated methods and classes. * Mark obsoleted methods to deprecate. * and other enhancements. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/requirement.rb')
-rw-r--r--lib/rubygems/requirement.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/rubygems/requirement.rb b/lib/rubygems/requirement.rb
index 2a60c86e69..430f351280 100644
--- a/lib/rubygems/requirement.rb
+++ b/lib/rubygems/requirement.rb
@@ -133,6 +133,7 @@ class Gem::Requirement
@requirements = [DefaultRequirement]
else
@requirements = requirements.map! { |r| self.class.parse r }
+ sort_requirements!
end
end
@@ -146,6 +147,7 @@ class Gem::Requirement
new = new.map { |r| self.class.parse r }
@requirements.concat new
+ sort_requirements!
end
##
@@ -183,11 +185,11 @@ class Gem::Requirement
end
def as_list # :nodoc:
- requirements.map { |op, version| "#{op} #{version}" }.sort
+ requirements.map { |op, version| "#{op} #{version}" }
end
def hash # :nodoc:
- requirements.sort.hash
+ requirements.hash
end
def marshal_dump # :nodoc:
@@ -264,7 +266,8 @@ class Gem::Requirement
end
def == other # :nodoc:
- Gem::Requirement === other and to_s == other.to_s
+ return unless Gem::Requirement === other
+ requirements == other.requirements
end
private
@@ -279,6 +282,14 @@ class Gem::Requirement
end
end
end
+
+ def sort_requirements! # :nodoc:
+ @requirements.sort! do |l, r|
+ comp = l.last <=> r.last # first, sort by the requirement's version
+ next comp unless comp == 0
+ l.first <=> r.first # then, sort by the operator (for stability)
+ end
+ end
end
class Gem::Version