diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-11-11 15:03:57 +0900 |
---|---|---|
committer | SHIBATA Hiroshi <hsbt@ruby-lang.org> | 2019-11-11 16:59:49 +0900 |
commit | 7d463e360b9c4718b17378eb52783116a01b884b (patch) | |
tree | ee6951d298d76fcbf0c5e062712e54de56a3fa39 /lib/rubygems/version.rb | |
parent | 31416423809f64d4b5ea6b9651cced3179cc5ced (diff) | |
download | ruby-7d463e360b9c4718b17378eb52783116a01b884b.tar.gz |
Merge RubyGems 3.1.0.pre3
* Fix gem pristine not accounting for user installed gems. Pull request
#2914 by Luis Sagastume.
* Refactor keyword argument test for Ruby 2.7. Pull request #2947 by
SHIBATA Hiroshi.
* Fix errors at frozen Gem::Version. Pull request #2949 by Nobuyoshi
Nakada.
* Remove taint usage on Ruby 2.7+. Pull request #2951 by Jeremy Evans.
* Check Manifest.txt is up to date. Pull request #2953 by David Rodríguez.
* Clarify symlink conditionals in tests. Pull request #2962 by David
Rodríguez.
* Update command line parsing to work under ps. Pull request #2966 by
David Rodríguez.
* Properly test `Gem::Specifications.stub_for`. Pull request #2970 by
David Rodríguez.
* Fix Gem::LOADED_SPECS_MUTEX handling for recursive locking. Pull request
#2985 by MSP-Greg.
Diffstat (limited to 'lib/rubygems/version.rb')
-rw-r--r-- | lib/rubygems/version.rb | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index 619f327968..6524faf5c8 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -197,6 +197,8 @@ class Gem::Version end @@all = {} + @@bump = {} + @@release = {} def self.new(version) # :nodoc: return super unless Gem::Version == self @@ -227,14 +229,14 @@ class Gem::Version # Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored. def bump - @bump ||= begin - segments = self.segments - segments.pop while segments.any? { |s| String === s } - segments.pop if segments.size > 1 - - segments[-1] = segments[-1].succ - self.class.new segments.join(".") - end + @@bump[self] ||= begin + segments = self.segments + segments.pop while segments.any? { |s| String === s } + segments.pop if segments.size > 1 + + segments[-1] = segments[-1].succ + self.class.new segments.join(".") + end end ## @@ -306,13 +308,13 @@ class Gem::Version # Non-prerelease versions return themselves. def release - @release ||= if prerelease? - segments = self.segments - segments.pop while segments.any? { |s| String === s } - self.class.new segments.join('.') - else - self - end + @@release[self] ||= if prerelease? + segments = self.segments + segments.pop while segments.any? { |s| String === s } + self.class.new segments.join('.') + else + self + end end def segments # :nodoc: @@ -374,6 +376,12 @@ class Gem::Version end.reduce(&:concat) end + def freeze + prerelease? + canonical_segments + super + end + protected def _version |