]> granicus.if.org Git - jq/commitdiff
Change order of evaluation for certain indexing operations.
authorStephen Dolan <mu@netsoc.tcd.ie>
Fri, 7 Dec 2012 00:26:00 +0000 (00:26 +0000)
committerStephen Dolan <mu@netsoc.tcd.ie>
Fri, 7 Dec 2012 00:28:11 +0000 (00:28 +0000)
'.foo[.bar]' used to parse like '.foo | .bar as $b | .[$b]',
now it parses like '.bar as $b | .foo | .[$b]'.

parser.y
testdata

index f77d6d9293c73f9d4b1b72b4f4cbc932829e6495..a2c765cd170e531b3371653903103e33b6436fd0 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -133,7 +133,7 @@ static block gen_dictpair(block k, block v) {
 }
 
 static block gen_index(block obj, block key) {
-  return BLOCK(obj, gen_subexp(key), gen_op_simple(INDEX));
+  return BLOCK(gen_subexp(key), obj, gen_op_simple(INDEX));
 }
 
 static block gen_binop(block a, block b, int op) {
index a3e2e49bebf969986ab97a326aaa908f4365c216..00ecc69f5a0ff4baf6507c9fec4b4e219b148d40 100644 (file)
--- a/testdata
+++ b/testdata
@@ -464,3 +464,7 @@ unique
 [min,max,min_by(.),max_by(.)]
 []
 [null,null,null,null]
+
+.foo[.baz]
+{"foo":{"bar":4},"baz":"bar"}
+4