mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
range.c: support to make beginless arithmetic sequences
* range.c (range_step): fix the guard condition so that a beginless range can be turned into a beginless arithmetic sequence. * test/ruby/test_range.rb (test_step): add assertions for the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e590173547
commit
dcb37d0639
2 changed files with 5 additions and 1 deletions
4
range.c
4
range.c
|
@ -397,7 +397,9 @@ range_step(int argc, VALUE *argv, VALUE range)
|
|||
step = (!rb_check_arity(argc, 0, 1) ? INT2FIX(1) : argv[0]);
|
||||
|
||||
if (!rb_block_given_p()) {
|
||||
if (rb_obj_is_kind_of(b, rb_cNumeric) && (NIL_P(e) || rb_obj_is_kind_of(e, rb_cNumeric))) {
|
||||
const VALUE b_num_p = rb_obj_is_kind_of(b, rb_cNumeric);
|
||||
const VALUE e_num_p = rb_obj_is_kind_of(e, rb_cNumeric);
|
||||
if ((b_num_p && (NIL_P(e) || e_num_p)) || (NIL_P(b) && e_num_p)) {
|
||||
return rb_arith_seq_new(range, ID2SYM(rb_frame_this_func()), argc, argv,
|
||||
range_step_size, b, e, step, EXCL(range));
|
||||
}
|
||||
|
|
|
@ -226,6 +226,8 @@ class TestRange < Test::Unit::TestCase
|
|||
assert_kind_of(Enumerator::ArithmeticSequence, (0..10).step(2))
|
||||
assert_kind_of(Enumerator::ArithmeticSequence, (0..10).step(0.5))
|
||||
assert_kind_of(Enumerator::ArithmeticSequence, (10..0).step(-1))
|
||||
assert_kind_of(Enumerator::ArithmeticSequence, (..10).step(2))
|
||||
assert_kind_of(Enumerator::ArithmeticSequence, (1..).step(2))
|
||||
|
||||
assert_raise(ArgumentError) { (0..10).step(0) { } }
|
||||
assert_raise(ArgumentError) { (0..).step(-1) { } }
|
||||
|
|
Loading…
Add table
Reference in a new issue