]> git.kaiwu.me - njs.git/commitdiff
Fixed ellipsis support.
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 11 May 2022 23:33:46 +0000 (16:33 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 11 May 2022 23:33:46 +0000 (16:33 -0700)
As of now, ellispis syntax is supported for function declaration with
the rest arguments.

This closes #365 issue on Github.

src/njs_parser.c
src/test/njs_unit_test.c

index 13c03b00ef9ad4def7289b4b3600b1b3c8b4fe35..162736db3a73548f1b4de77ba52fcba07189f384 100644 (file)
@@ -1664,12 +1664,18 @@ njs_parser_array_element_list(njs_parser_t *parser, njs_lexer_token_t *token,
         return NJS_OK;
 
     case NJS_TOKEN_ELLIPSIS:
+#if 0
         njs_lexer_consume_token(parser->lexer, 1);
 
         njs_parser_next(parser, njs_parser_assignment_expression);
 
         return njs_parser_after(parser, current, array, 0,
                                 njs_parser_array_spread_element);
+#else
+        (void) njs_parser_array_spread_element;
+        return njs_parser_failed(parser);
+#endif
+
     default:
         break;
     }
@@ -2862,9 +2868,11 @@ njs_parser_argument_list(njs_parser_t *parser, njs_lexer_token_t *token,
      * ArgumentList , ... AssignmentExpression
      */
 
+#if 0 /* TODO. */
     if (token->type == NJS_TOKEN_ELLIPSIS) {
         njs_lexer_consume_token(parser->lexer, 1);
     }
+#endif
 
     njs_parser_next(parser, njs_parser_assignment_expression);
 
index 490c0773f161278b9d9572fe90e28a159ccafaad..e80cd9704eb949ba737109c65281872cb4b88722 100644 (file)
@@ -18041,9 +18041,14 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("[(]"),
       njs_str("SyntaxError: Unexpected token \"]\" in 1") },
 
+#if 0 /* TODO spreading support. */
     { njs_str("[...]"),
       njs_str("SyntaxError: Unexpected token \"]\" in 1") },
 
+    { njs_str("var id = (x) => x, x = id(...[1,2,3]); typeof x"),
+      njs_str("number") },
+#endif
+
     { njs_str("switch () {}"),
       njs_str("SyntaxError: Unexpected token \")\" in 1") },