diff options
author | David Tolnay <dtolnay@gmail.com> | 2015-08-06 23:04:47 -0700 |
---|---|---|
committer | David Tolnay <dtolnay@gmail.com> | 2015-08-06 23:05:03 -0700 |
commit | a47b32999b8a6a754b91909548700efdad3c2dd9 (patch) | |
tree | 1b48e4f064c19c1c94093447fd9ed6475922add0 /builtin.c | |
parent | d66fbd218bfccf83b42448febd4f255883d726a5 (diff) |
Fix range(value;stream) (fix #886)
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")), |