aboutsummaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-10 11:45:50 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-10 11:45:50 +0900
commite2017f8c7cc2066286ab8047d4de47704f871a28 (patch)
treed29e5551037f187deeb51bec034613ba3f4ee1b2 /range.c
parent2293547d9b59e0641e26837500986e78f9ba891b (diff)
downloadruby-e2017f8c7cc2066286ab8047d4de47704f871a28.tar.gz
Unify iteration arguments
Diffstat (limited to 'range.c')
-rw-r--r--range.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/range.c b/range.c
index cb86f540d8..96c059b806 100644
--- a/range.c
+++ b/range.c
@@ -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;