diff options
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -1339,9 +1339,15 @@ static block bind_bytecoded_builtins(block b) { { // Note that we can now define `range` as a jq-coded function block rangevar = gen_op_var_fresh(STOREV, "rangevar"); - block init = BLOCK(gen_op_simple(DUP), gen_call("start", gen_noop()), rangevar); - block range = BLOCK(init, + block rangestart = gen_op_var_fresh(STOREV, "rangestart"); + block range = BLOCK(gen_op_simple(DUP), + gen_call("start", gen_noop()), + rangestart, gen_call("end", gen_noop()), + gen_op_simple(DUP), + gen_op_bound(LOADV, rangestart), + // Reset rangevar for every value generated by "end" + rangevar, gen_op_bound(RANGE, rangevar)); builtins = BLOCK(builtins, gen_function("range", BLOCK(gen_param("start"), gen_param("end")), |