From: Igor Sysoev Date: Mon, 23 Nov 2015 12:35:49 +0000 (+0300) Subject: Empty array elements support. X-Git-Tag: 0.1.0~115 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=1a2e9bfab52c8e0d602a3a6135f478b20a8e3367;p=njs.git Empty array elements support. --- 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"),