From 1a2e9bfab52c8e0d602a3a6135f478b20a8e3367 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Mon, 23 Nov 2015 15:35:49 +0300 Subject: [PATCH] Empty array elements support. --- njs/njs_parser.c | 5 +++++ njs/test/njs_unit_test.c | 25 +++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/njs/njs_parser.c b/njs/njs_parser.c index 68c14c23..9136e5c7 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -1579,6 +1579,11 @@ njs_parser_array(njs_vm_t *vm, njs_parser_t *parser, break; } + if (token == NJS_TOKEN_COMMA) { + index++; + continue; + } + node = njs_parser_node_alloc(vm); if (nxt_slow_path(node == NULL)) { return NJS_TOKEN_ERROR; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index d41099b0..397ba19b 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -1644,6 +1644,29 @@ static njs_unit_test_t njs_test[] = /**/ + { nxt_string("[,,]"), + nxt_string(",") }, + + { nxt_string("[,,,]"), + nxt_string(",,") }, + + { nxt_string("[1,2,]"), + nxt_string("1,2") }, + + { nxt_string("[1,2,,3]"), + nxt_string("1,2,,3") }, + + { nxt_string("[,,].length"), + nxt_string("2") }, + + { nxt_string("[,,,].length"), + nxt_string("3") }, + + { nxt_string("[1,2,,3].length"), + nxt_string("4") }, + + /**/ + { nxt_string("var n = { toString: function() { return 1 } }; [1,2][n]"), nxt_string("2") }, @@ -1718,11 +1741,9 @@ static njs_unit_test_t njs_test[] = "a.forEach(function(v, i, a) { this.sum += v }, s); s.sum"), nxt_string("0") }, -#if 0 { nxt_string("var a = [,,,]; var s = { sum: 0 };" "a.forEach(function(v, i, a) { this.sum += v }, s); s.sum"), nxt_string("0") }, -#endif { nxt_string("var a = [1,2,3]; var s = { sum: 0 };" "a.forEach(function(v, i, a) { this.sum += v }, s); s.sum"), -- 2.47.3