From d2487ed47587ec1cd1b456068e0af3ea0b39596d Mon Sep 17 00:00:00 2001 From: marcandre Date: Fri, 22 May 2015 13:36:39 +0000 Subject: [PATCH] * lib/prime.rb: Remove obsolete Prime.new patch by Ajay Kumar. [Fixes GH-891] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/prime.rb | 42 +----------------------------------------- test/test_prime.rb | 22 ++++++++-------------- 3 files changed, 14 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99cfbef936..f3a4a076f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri May 22 22:36:14 2015 Marc-Andre Lafortune + + * lib/prime.rb: Remove obsolete Prime.new + patch by Ajay Kumar. [Fixes GH-891] + Fri May 22 21:13:12 2015 Nobuyoshi Nakada * include/ruby/intern.h (rb_sym_count): move `rb_sym_all_symbols` diff --git a/lib/prime.rb b/lib/prime.rb index b2b55f1f2e..87bb284cea 100644 --- a/lib/prime.rb +++ b/lib/prime.rb @@ -57,9 +57,6 @@ end # # == Retrieving the instance # -# +Prime+.new is obsolete. Now +Prime+ has the default instance and you can -# access it as +Prime+.instance. -# # For convenience, each instance method of +Prime+.instance can be accessed # as a class method of +Prime+. # @@ -90,20 +87,11 @@ end class Prime include Enumerable - @the_instance = Prime.new - - # obsolete. Use +Prime+::+instance+ or class methods of +Prime+. - def initialize - @generator = EratosthenesGenerator.new - extend OldCompatibility - warn "Prime::new is obsolete. use Prime::instance or class methods of Prime." - end + include Singleton class << self extend Forwardable include Enumerable - # Returns the default instance of Prime. - def instance; @the_instance end def method_added(method) # :nodoc: (class<< self;self;end).def_delegator :instance, method @@ -136,14 +124,6 @@ class Prime # Upper bound of prime numbers. The iterator stops after it # yields all prime numbers p <= +ubound+. # - # == Note - # - # +Prime+.+new+ returns an object extended by +Prime+::+OldCompatibility+ - # in order to be compatible with Ruby 1.8, and +Prime+#each is overwritten - # by +Prime+::+OldCompatibility+#+each+. - # - # +Prime+.+new+ is now obsolete. Use +Prime+.+instance+.+each+ or simply - # +Prime+.+each+. def each(ubound = nil, generator = EratosthenesGenerator.new, &block) generator.upper_bound = ubound generator.each(&block) @@ -464,24 +444,4 @@ class Prime @max_checked = segment_max end end - - # Provides a +Prime+ object with compatibility to Ruby 1.8 when instantiated via +Prime+.+new+. - module OldCompatibility - # Returns the next prime number and forwards internal pointer. - def succ - @generator.succ - end - alias next succ - - # Overwrites Prime#each. - # - # Iterates the given block over all prime numbers. Note that enumeration - # starts from the current position of internal pointer, not rewound. - def each - return @generator.dup unless block_given? - loop do - yield succ - end - end - end end diff --git a/test/test_prime.rb b/test/test_prime.rb index 885406f9bd..48322a5ebc 100644 --- a/test/test_prime.rb +++ b/test/test_prime.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'prime' -require 'stringio' require 'timeout' class TestPrime < Test::Unit::TestCase @@ -54,23 +53,18 @@ class TestPrime < Test::Unit::TestCase assert enum.respond_to?(:rewind) end - def test_new - orig_stderr, orig_verbose = $stderr, $VERBOSE - - $stderr = buf = StringIO.new('', 'w') - $VERBOSE = false - - enum = Prime.new - assert_match("obsolete", buf.string) - + def test_instance_without_block + enum = Prime.instance.each assert enum.respond_to?(:each) assert enum.kind_of?(Enumerable) + assert enum.respond_to?(:with_index) + assert enum.respond_to?(:next) assert enum.respond_to?(:succ) + assert enum.respond_to?(:rewind) + end - assert Prime === enum - ensure - $stderr = orig_stderr - $VERBOSE = orig_verbose + def test_new + exception = assert_raises(NoMethodError) { Prime.new } end def test_enumerator_succ