From dcb37d06395d996b046b755d2219c4accaac0b5f Mon Sep 17 00:00:00 2001 From: mrkn Date: Thu, 4 Apr 2019 03:34:52 +0000 Subject: 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 --- range.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'range.c') diff --git a/range.c b/range.c index acf4a5cd74..e5c6fbcf9d 100644 --- a/range.c +++ b/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)); } -- cgit v1.2.3