From 25a5227ab188b940d8bbc291bf4c9d62e5d63163 Mon Sep 17 00:00:00 2001 From: mrkn Date: Thu, 9 Aug 2018 13:18:08 +0000 Subject: [PATCH] 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 --- enumerator.c | 2 ++ test/ruby/test_arithmetic_sequence.rb | 8 ++++++++ 2 files changed, 10 insertions(+) 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)