summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-09-02 22:54:58 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-09-02 22:54:58 +0000
commitc68596aef1c03678b196c3ee1269df09710dbdbf (patch)
tree190b43f177a49138a27f8ffb0e31936161a41570
parent0c3d1245715dd7708a594299228ad6f62e38aa74 (diff)
Retain behavior of Numeric#step when nil is given as second argument.
* numeric.c (NUM_STEP_SCAN_ARGS): On sencond thought, keep Numeral#step backward compatible in that it raises TypeError when nil is given as second argument. * test/ruby/test_float.rb (TestFloat#test_num2dbl): Revert. * test/ruby/test_numeric.rb (TestNumeric#test_step): Fix test cases for the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42788 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog11
-rw-r--r--numeric.c3
-rw-r--r--test/ruby/test_float.rb3
-rw-r--r--test/ruby/test_numeric.rb4
4 files changed, 19 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 963d36aa45..96426b47fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Tue Sep 3 07:49:25 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (NUM_STEP_SCAN_ARGS): On sencond thought, keep
+ Numeral#step backward compatible in that it raises TypeError
+ when nil is given as second argument.
+
+ * test/ruby/test_float.rb (TestFloat#test_num2dbl): Revert.
+
+ * test/ruby/test_numeric.rb (TestNumeric#test_step): Fix test
+ cases for the above change.
+
Tue Sep 3 07:39:58 2013 Tanaka Akira <akr@fsij.org>
* bignum.c (bytes_2comp): Define it only for little endian
diff --git a/numeric.c b/numeric.c
index 57b61759c1..780186eb58 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1854,6 +1854,9 @@ ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl)
} \
else { \
/* compatibility */ \
+ if (argc > 1 && NIL_P(step)) { \
+ rb_raise(rb_eTypeError, "step must be numeric"); \
+ } \
if (rb_equal(step, INT2FIX(0))) { \
rb_raise(rb_eArgError, "step can't be 0"); \
} \
diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb
index c55b051832..f011c2b062 100644
--- a/test/ruby/test_float.rb
+++ b/test/ruby/test_float.rb
@@ -561,6 +561,9 @@ class TestFloat < Test::Unit::TestCase
assert_raise(TypeError) do
1.0.step(2.0, "0.5") {}
end
+ assert_raise(TypeError) do
+ 1.0.step(2.0, nil) {}
+ end
end
def test_sleep_with_Float
diff --git a/test/ruby/test_numeric.rb b/test/ruby/test_numeric.rb
index d2f211245d..4e7aef2777 100644
--- a/test/ruby/test_numeric.rb
+++ b/test/ruby/test_numeric.rb
@@ -229,8 +229,8 @@ class TestNumeric < Test::Unit::TestCase
assert_raise(ArgumentError) { 1.step(10, 0).size }
assert_raise(TypeError) { 1.step(10, "1") { } }
assert_raise(TypeError) { 1.step(10, "1").size }
- assert_nothing_raised { 1.step(10, nil) { } }
- assert_nothing_raised { 1.step(10, nil).size }
+ assert_raise(TypeError) { 1.step(10, nil) { } }
+ assert_raise(TypeError) { 1.step(10, nil).size }
assert_nothing_raised { 1.step(by: 0, to: nil) }
assert_nothing_raised { 1.step(by: 0, to: nil).size }
assert_nothing_raised { 1.step(by: 0) }