Fix range(value;stream) (fix #886)

This commit is contained in:
David Tolnay committed 2015-08-06 23:05:03 -07:00
1 parent d66fbd218b
commit a47b32999b
2 files changed
+16 -2

No files matched your search

+8 -2
View File
@@ -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")),