diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-10 11:45:50 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-10 11:45:50 +0900 |
commit | e2017f8c7cc2066286ab8047d4de47704f871a28 (patch) | |
tree | d29e5551037f187deeb51bec034613ba3f4ee1b2 /range.c | |
parent | 2293547d9b59e0641e26837500986e78f9ba891b (diff) |
Unify iteration arguments
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 16 |
1 files changed, 2 insertions, 14 deletions
@@ -463,6 +463,7 @@ range_step(int argc, VALUE *argv, VALUE range) } step = check_step_domain(step); + VALUE iter[2] = {INT2FIX(1), step}; if (FIXNUM_P(b) && NIL_P(e) && FIXNUM_P(step)) { long i = FIX2LONG(b), unit = FIX2LONG(step); @@ -490,10 +491,6 @@ range_step(int argc, VALUE *argv, VALUE range) } else if (SYMBOL_P(b) && (NIL_P(e) || SYMBOL_P(e))) { /* symbols are special */ - VALUE iter[2]; - iter[0] = INT2FIX(1); - iter[1] = step; - b = rb_sym2str(b); if (NIL_P(e)) { rb_str_upto_endless_each(b, sym_step_i, (VALUE)iter); @@ -522,12 +519,7 @@ range_step(int argc, VALUE *argv, VALUE range) tmp = rb_check_string_type(b); if (!NIL_P(tmp)) { - VALUE iter[2]; - b = tmp; - iter[0] = INT2FIX(1); - iter[1] = step; - if (NIL_P(e)) { rb_str_upto_endless_each(b, step_i, (VALUE)iter); } @@ -536,15 +528,11 @@ range_step(int argc, VALUE *argv, VALUE range) } } else { - VALUE args[2]; - if (!discrete_object_p(b)) { rb_raise(rb_eTypeError, "can't iterate from %s", rb_obj_classname(b)); } - args[0] = INT2FIX(1); - args[1] = step; - range_each_func(range, step_i, (VALUE)args); + range_each_func(range, step_i, (VALUE)iter); } } return range; |