]> git.kaiwu.me - njs.git/commitdiff
Fixed parsing of export default declarations.
authorArtem S. Povalyukhin <artem.povaluhin@gmail.com>
Thu, 24 Jun 2021 05:53:12 +0000 (08:53 +0300)
committerArtem S. Povalyukhin <artem.povaluhin@gmail.com>
Thu, 24 Jun 2021 05:53:12 +0000 (08:53 +0300)
With non-assignment expression.

src/njs_parser.c
test/module/export_non_assignment.js [new file with mode: 0644]
test/njs_expect_test.exp

index fc8adc0649b9eedc81a7cfa38a99328f42b8d5e7..7a89f7e75bf103f42fd635326a9a22edc7dd3e58 100644 (file)
@@ -7468,7 +7468,7 @@ njs_parser_export(njs_parser_t *parser, njs_lexer_token_t *token,
     node->token_line = parser->line;
     parser->node = node;
 
-    njs_parser_next(parser, njs_parser_expression);
+    njs_parser_next(parser, njs_parser_assignment_expression);
 
     return njs_parser_after(parser, current, node, 1, njs_parser_export_after);
 }
@@ -7478,6 +7478,10 @@ static njs_int_t
 njs_parser_export_after(njs_parser_t *parser, njs_lexer_token_t *token,
     njs_queue_link_t *current)
 {
+    if (njs_parser_expect_semicolon(parser, token) != NJS_OK) {
+        return njs_parser_failed(parser);
+    }
+
     parser->target->right = parser->node;
     parser->node = parser->target;
 
diff --git a/test/module/export_non_assignment.js b/test/module/export_non_assignment.js
new file mode 100644 (file)
index 0000000..e501731
--- /dev/null
@@ -0,0 +1 @@
+export default 10, 11;
index e179f413901cde6e4ecf15d616ca0f11e6ca953d..cca2b05405e785a140d4ea32f0ed554408cf1652 100644 (file)
@@ -749,6 +749,8 @@ njs_test {
      "Identifier \"default\" has already been declared in export.js:5\r\n"}
     {"import m from 'export_non_default.js'\r\n"
      "Non-default export is not supported in export_non_default.js:3\r\n"}
+    {"import m from 'export_non_assignment.js'\r\n"
+     "Unexpected token \",\" in export_non_assignment.js:1\r\n"}
     {"import ref from 'ref_exception.js'\r\n"
      "ReferenceError: \"undeclared\" is not defined"}
     {"var ref\r\n"