1 parent
e13f24ab45
commit
d8706fd460
2 files changed
+14
-5
No files matched your search
@@ -164,6 +164,16 @@ static block gen_format(block a, jv fmt) {
|
|||||||
return BLOCK(a, gen_call("format", BLOCK(gen_lambda(gen_const(fmt)))));
|
return BLOCK(a, gen_call("format", BLOCK(gen_lambda(gen_const(fmt)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static block gen_definedor_assign(block object, block val) {
|
||||||
|
block tmp = block_bind(gen_op_var_unbound(STOREV, "tmp"),
|
||||||
|
gen_noop(), OP_HAS_VARIABLE);
|
||||||
|
return BLOCK(gen_op_simple(DUP),
|
||||||
|
val, tmp,
|
||||||
|
gen_call("_modify", BLOCK(gen_lambda(object),
|
||||||
|
gen_lambda(gen_definedor(gen_noop(),
|
||||||
|
gen_op_var_bound(LOADV, tmp))))));
|
||||||
|
}
|
||||||
|
|
||||||
static block gen_update(block object, block val, int optype) {
|
static block gen_update(block object, block val, int optype) {
|
||||||
block tmp = block_bind(gen_op_var_unbound(STOREV, "tmp"),
|
block tmp = block_bind(gen_op_var_unbound(STOREV, "tmp"),
|
||||||
gen_noop(), OP_HAS_VARIABLE);
|
gen_noop(), OP_HAS_VARIABLE);
|
||||||
@@ -235,7 +245,7 @@ Exp "//" Exp {
|
|||||||
} |
|
} |
|
||||||
|
|
||||||
Exp "//=" Exp {
|
Exp "//=" Exp {
|
||||||
$$ = gen_update($1, gen_definedor(gen_noop(), $3), 0);
|
$$ = gen_definedor_assign($1, $3);
|
||||||
} |
|
} |
|
||||||
|
|
||||||
Exp "|=" Exp {
|
Exp "|=" Exp {
|
||||||
|
|||||||
+3
-4
@@ -475,10 +475,9 @@ def inc(x): x |= .+1; inc(.[].a)
|
|||||||
[{"foo":[1,2], "bar": 42}, {"foo":[1], "bar": null}, {"foo":[null,false,3], "bar": 18}, {"foo":[], "bar":42}, {"foo": [null,false,null], "bar": 41}]
|
[{"foo":[1,2], "bar": 42}, {"foo":[1], "bar": null}, {"foo":[null,false,3], "bar": 18}, {"foo":[], "bar":42}, {"foo": [null,false,null], "bar": 41}]
|
||||||
[[1,2], [1], [3], [42], [41]]
|
[[1,2], [1], [3], [42], [41]]
|
||||||
|
|
||||||
# FIXME: behaviour of update operators
|
.[] //= .[0]
|
||||||
# .[] //= .[0]
|
["hello",true,false,[false],null]
|
||||||
# ["hello",true,false,[false],null]
|
["hello",true,"hello",[false],"hello"]
|
||||||
# ["hello",true,"hello",[false],"hello"]
|
|
||||||
|
|
||||||
.[] | [.[0] and .[1], .[0] or .[1]]
|
.[] | [.[0] and .[1], .[0] or .[1]]
|
||||||
[[true,[]], [false,1], [42,null], [null,false]]
|
[[true,[]], [false,1], [42,null], [null,false]]
|
||||||
|
|||||||
Reference in new issue
Block a user