]> git.kaiwu.me - njs.git/commitdiff
Avoiding strict check in export default value expressions.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 28 Mar 2019 17:31:20 +0000 (20:31 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Thu, 28 Mar 2019 17:31:20 +0000 (20:31 +0300)
Previously, only object literals were allowed.

njs/njs_parser.c
njs/test/module/export_expression.js [new file with mode: 0644]
njs/test/module/export_expression2.js [new file with mode: 0644]
njs/test/module/export_name.js [new file with mode: 0644]
njs/test/njs_expect_test.exp

index a3baf2a5bee37422e661265ad62d6792784365ad..6b2f14db4b4db561fa67ae169fbf6d6875848e6e 100644 (file)
@@ -2076,11 +2076,6 @@ njs_parser_export_statement(njs_vm_t *vm, njs_parser_t *parser)
         return token;
     }
 
-    if (parser->node->token != NJS_TOKEN_OBJECT) {
-        njs_parser_syntax_error(vm, parser, "Illegal export value");
-        return NXT_ERROR;
-    }
-
     node->right = parser->node;
     parser->node = node;
 
diff --git a/njs/test/module/export_expression.js b/njs/test/module/export_expression.js
new file mode 100644 (file)
index 0000000..26c2056
--- /dev/null
@@ -0,0 +1,10 @@
+function gen_export() {
+    var _export = {};
+
+    _export.sum = function(a, b) { return a + b; }
+    _export.prod = function(a, b) { return a * b; }
+
+    return _export;
+}
+
+export default gen_export();
diff --git a/njs/test/module/export_expression2.js b/njs/test/module/export_expression2.js
new file mode 100644 (file)
index 0000000..f341722
--- /dev/null
@@ -0,0 +1,5 @@
+var _export = {};
+
+export default (_export.sum = function(a, b) { return a + b; },
+                _export.prod = function(a, b) { return a * b; },
+                _export);
diff --git a/njs/test/module/export_name.js b/njs/test/module/export_name.js
new file mode 100644 (file)
index 0000000..b055a2b
--- /dev/null
@@ -0,0 +1,6 @@
+var _export = {};
+
+_export.sum = function(a, b) { return a + b; }
+_export.prod = function(a, b) { return a * b; }
+
+export default _export;
index db1e597cf634133793636296e33fa84d49685468..01a2fe1662fed846675fecf5b3e5e58861686461 100644 (file)
@@ -685,6 +685,18 @@ njs_test {
      "Error: loading exception\r\n    at module \\(loading_exception.js:1\\)"}
     {"import lib3 from 'lib1.js'\r\n"
      "undefined\r\n"}
+    {"import m from 'export_name.js'\r\n"
+     "undefined\r\n"}
+    {"m.prod(3,4)\r\n"
+     "12\r\n"}
+    {"import m from 'export_expression.js'\r\n"
+     "undefined\r\n"}
+    {"m.sum(3,4)\r\n"
+     "7\r\n"}
+    {"import m from 'export_expression2.js'\r\n"
+     "undefined\r\n"}
+    {"m.prod(3,4)\r\n"
+     "12\r\n"}
 } "-p njs/test/module/"
 
 njs_run "-p njs/test/module/libs/ -d ./njs/test/module/normal.js" \