diff options
author | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-09 13:18:08 +0000 |
---|---|---|
committer | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-09 13:18:08 +0000 |
commit | 25a5227ab188b940d8bbc291bf4c9d62e5d63163 (patch) | |
tree | c810b3da6411eb3fc8c9fc99dc238f8198413844 | |
parent | ed4e38c4b0cddd446b13fe95e23bda4c6a97086e (diff) | |
download | ruby-25a5227ab188b940d8bbc291bf4c9d62e5d63163.tar.gz |
enumerator.c: undef new and allocate of ArithmeticSequence
Undefine new and allocate methods of Enumerator::ArithmeticSequence.
[ruby-core:82816] [Feature #13904]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | enumerator.c | 2 | ||||
-rw-r--r-- | test/ruby/test_arithmetic_sequence.rb | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/enumerator.c b/enumerator.c index 66c126d409..9e48fddae3 100644 --- a/enumerator.c +++ b/enumerator.c @@ -2844,6 +2844,8 @@ InitVM_Enumerator(void) /* ArithmeticSequence */ rb_cArithSeq = rb_define_class_under(rb_cEnumerator, "ArithmeticSequence", rb_cEnumerator); + rb_undef_alloc_func(rb_cArithSeq); + rb_undef_method(CLASS_OF(rb_cArithSeq), "new"); rb_define_method(rb_cArithSeq, "begin", arith_seq_begin, 0); rb_define_method(rb_cArithSeq, "end", arith_seq_end, 0); rb_define_method(rb_cArithSeq, "exclude_end?", arith_seq_exclude_end, 0); diff --git a/test/ruby/test_arithmetic_sequence.rb b/test/ruby/test_arithmetic_sequence.rb index fe1af362f4..fcabc8a8c7 100644 --- a/test/ruby/test_arithmetic_sequence.rb +++ b/test/ruby/test_arithmetic_sequence.rb @@ -2,6 +2,14 @@ require 'test/unit' class TestArithmeticSequence < Test::Unit::TestCase + def test_new + assert_raise(NoMethodError) { Enumerator::ArithmeticSequence.new } + end + + def test_allocate + assert_raise(TypeError) { Enumerator::ArithmeticSequence.allocate } + end + def test_begin assert_equal(1, 1.step.begin) assert_equal(1, 1.step(10).begin) |