]> git.kaiwu.me - njs.git/commitdiff
Fixed parsing of invalid for-in statement.
authorVadim Zhestikov <v.zhestikov@f5.com>
Thu, 1 Jun 2023 16:39:25 +0000 (09:39 -0700)
committerVadim Zhestikov <v.zhestikov@f5.com>
Thu, 1 Jun 2023 16:39:25 +0000 (09:39 -0700)
The issue was introduced in: b9d18d4dd34e

src/njs_parser.c
src/test/njs_unit_test.c

index 68743baac0143240e5ff5f706f3f80a0b299a070..6c093c77bdff32b00c7fe763853ccadcff60c692 100644 (file)
@@ -5496,6 +5496,10 @@ njs_parser_for_expression_map_reparse(njs_parser_t *parser,
 {
     njs_str_t  *text;
 
+    if (parser->ret != NJS_OK && parser->node != NULL) {
+        return njs_parser_failed(parser);
+    }
+
     if (parser->node == NULL) {
         njs_lexer_in_fail_set(parser->lexer, 1);
 
index db5e99bcc83b2b45046fab66aaf18b1f9d27de16..401fe558e04c94476d737d5f943a0ef10f1a2a01 100644 (file)
@@ -2969,6 +2969,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("for (a(b * in d) ;"),
       njs_str("SyntaxError: Unexpected token \"in\" in 1") },
 
+    { njs_str("for(c=let c"),
+      njs_str("SyntaxError: Unexpected token \"let\" in 1") },
+
     /* switch. */
 
     { njs_str("switch"),