]> git.kaiwu.me - njs.git/commitdiff
"var" statement fixed.
authorIgor Sysoev <igor@sysoev.ru>
Fri, 11 Dec 2015 15:41:40 +0000 (18:41 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Fri, 11 Dec 2015 15:41:40 +0000 (18:41 +0300)
njs/njs_parser.c
njs/test/njs_unit_test.c

index a33b45eabfb1e771183b5731c11291aa151a73b4..ce3a2fe9b6f57a60a9bbc4dc0f4e59e94a6b6140 100644 (file)
@@ -604,7 +604,8 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser)
         }
 
         if (token != NJS_TOKEN_NAME) {
-            return token;
+            /* TODO: message. */
+            return NJS_TOKEN_ILLEGAL;
         }
 
         nxt_thread_log_debug("JS: %V", &parser->lexer->text);
index fdabefa503e6b34a0fa19ed99d5ea7d07b98925f..e880ab626bcb070947e74d5265b5d090d5911e72 100644 (file)
@@ -1310,6 +1310,19 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("a = 3; if (true) if (false); else a = 2; a"),
       nxt_string("2") },
 
+    /* var statements. */
+
+    { nxt_string("var; a"),
+      nxt_string("SyntaxError") },
+
+    { nxt_string("var \n a \n = 1; a"),
+      nxt_string("1") },
+
+    { nxt_string("var \n a, \n b; b"),
+      nxt_string("undefined") },
+
+    /**/
+
     { nxt_string("for (i = 0; i < 10; i++) { i += 1 } i"),
       nxt_string("10") },
 
@@ -3039,6 +3052,12 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("RegExp.constructor === Function"),
       nxt_string("true") },
 
+    { nxt_string("var a = 0, function(a) { return a + 1 }(2); a"),
+      nxt_string("SyntaxError") },
+
+    { nxt_string("var a = (0, function(a) { return a + 1 }(2)); a"),
+      nxt_string("3") },
+
 #if 0
     { nxt_string("Object.prototype.toString.call()"),
       nxt_string("[object Undefined]") },
@@ -3139,12 +3158,10 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("var x = null;"),
       nxt_string("") },
 
-#if 0
     /* es5id: 8.2_A2 */
 
     { nxt_string("var null;"),
       nxt_string("SyntaxError") },
-#endif
 
     /* es5id: 8.2_A3 */