]> granicus.if.org Git - jq/commitdiff
Better error handling for .foo case in parser. See #141.
authorStephen Dolan <mu@netsoc.tcd.ie>
Mon, 3 Jun 2013 22:08:17 +0000 (23:08 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Mon, 3 Jun 2013 22:12:31 +0000 (23:12 +0100)
parser.y

index 461b9c98edfcc66907ae8b3ded214f16cf48ef8f..c9563a087acb345fd0e2159dac3c65433d5906f7 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -227,7 +227,7 @@ Term "as" '$' IDENT '|' Exp {
 "if" Exp "then" Exp ElseBody {
   $$ = gen_cond($2, $4, $5);
 } |
-"if" Exp error {
+"if" Exp "then" error {
   FAIL(@$, "Possibly unterminated 'if' statment");
   $$ = $2;
 } |
@@ -405,6 +405,15 @@ Term '.' IDENT {
 '.' IDENT { 
   $$ = gen_index(gen_noop(), gen_const($2)); 
 } |
+'.' error {
+  FAIL(@$, "try .[\"field\"] instead of .field for unusually named fields");
+  $$ = gen_noop();
+} |
+'.' IDENT error {
+  jv_free($2);
+  FAIL(@$, "try .[\"field\"] instead of .field for unusually named fields");
+  $$ = gen_noop();
+} | 
 /* FIXME: string literals */
 Term '[' Exp ']' {
   $$ = gen_index($1, $3);