]> git.kaiwu.me - njs.git/commitdiff
Empty array elements support.
authorIgor Sysoev <igor@sysoev.ru>
Mon, 23 Nov 2015 12:35:49 +0000 (15:35 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 23 Nov 2015 12:35:49 +0000 (15:35 +0300)
njs/njs_parser.c
njs/test/njs_unit_test.c

index 68c14c2370fb784194976b85a12df6c6773eaf4a..9136e5c70e531fa108d52685ecc8212dcafa0b04 100644 (file)
@@ -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;
index d41099b01ef1066011ff9ed02ba980f281cfce97..397ba19b2cc537de2bf40eaa76757ff34a483ea1 100644 (file)
@@ -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"),