1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
marcandre 2015-05-22 13:36:39 +00:00
parent 3a08b7e204
commit d2487ed475
3 changed files with 14 additions and 55 deletions

View file

@ -1,3 +1,8 @@
Fri May 22 22:36:14 2015 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* lib/prime.rb: Remove obsolete Prime.new
patch by Ajay Kumar. [Fixes GH-891]
Fri May 22 21:13:12 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/intern.h (rb_sym_count): move `rb_sym_all_symbols`

View file

@ -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

View file

@ -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