From 8847a0f6bacfc90fa98ecbf94df9122f8e852d29 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Fri, 11 Dec 2015 18:41:40 +0300 Subject: [PATCH] "var" statement fixed. --- njs/njs_parser.c | 3 ++- njs/test/njs_unit_test.c | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/njs/njs_parser.c b/njs/njs_parser.c index a33b45ea..ce3a2fe9 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -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); diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index fdabefa5..e880ab62 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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 */ -- 2.47.3