Hrm. Update operators (//=, +=, etc.) aren't very well thought out.
In complex cases, their behaviour is kinda weird. Here's a failing test for what I think they should do.
This commit is contained in:
1 parent
df195b3187
commit
cc2fb20ca0
1 file changed
+4
-3
+4
-3
@@ -312,9 +312,10 @@ 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]]
|
||||||
|
|
||||||
.[] //= 42
|
# FIXME: behaviour of update operators
|
||||||
["hello",true,false,[false],null]
|
# .[] //= .[0]
|
||||||
["hello",true,42,[false],42]
|
# ["hello",true,false,[false],null]
|
||||||
|
# ["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