]> git.kaiwu.me - njs.git/commitdiff
Rejection of multiple "var" declarations in the for-in statement.
authorValentin Bartenev <vbart@nginx.com>
Thu, 2 May 2019 18:21:16 +0000 (21:21 +0300)
committerValentin Bartenev <vbart@nginx.com>
Thu, 2 May 2019 18:21:16 +0000 (21:21 +0300)
njs/njs_parser.c
njs/test/njs_unit_test.c

index c32f0e65be0fbc75f3ccca296504eb5fa2ef0d74..4e1ac418df33114688becccd9a7fe7e376499ffc 100644 (file)
@@ -1078,8 +1078,12 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser, njs_token_t parent,
             return token;
         }
 
-        if (var_in && token == NJS_TOKEN_IN) {
-            return njs_parser_var_in_statement(vm, parser, name);
+        if (var_in) {
+            if (token == NJS_TOKEN_IN) {
+                return njs_parser_var_in_statement(vm, parser, name);
+            }
+
+            var_in = 0;
         }
 
         expr = NULL;
index 0bd45f010befaa45d28778d6805d022c5dfb08d9..15578bfe1b9dc7f5c679c9450e603f560f44f561 100644 (file)
@@ -2265,6 +2265,9 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("for (null in undefined);"),
       nxt_string("ReferenceError: Invalid left-hand side \"null\" in for-in statement in 1") },
 
+    { nxt_string("for (var a, b in []);"),
+      nxt_string("SyntaxError: Unexpected token \"in\" in 1") },
+
     { nxt_string("var s = ''; for (var p in [1,2]) {s += p}; s"),
       nxt_string("01") },