summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/prime.rb42
-rw-r--r--test/test_prime.rb22
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 <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`
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