From 242a3777696ef11d284dbb01666f6444ef6dcd92 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Thu, 28 Mar 2019 20:31:20 +0300 Subject: [PATCH] Avoiding strict check in export default value expressions. Previously, only object literals were allowed. --- njs/njs_parser.c | 5 ----- njs/test/module/export_expression.js | 10 ++++++++++ njs/test/module/export_expression2.js | 5 +++++ njs/test/module/export_name.js | 6 ++++++ njs/test/njs_expect_test.exp | 12 ++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 njs/test/module/export_expression.js create mode 100644 njs/test/module/export_expression2.js create mode 100644 njs/test/module/export_name.js diff --git a/njs/njs_parser.c b/njs/njs_parser.c index a3baf2a5..6b2f14db 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -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 index 00000000..26c20564 --- /dev/null +++ b/njs/test/module/export_expression.js @@ -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 index 00000000..f3417221 --- /dev/null +++ b/njs/test/module/export_expression2.js @@ -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 index 00000000..b055a2b0 --- /dev/null +++ b/njs/test/module/export_name.js @@ -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; diff --git a/njs/test/njs_expect_test.exp b/njs/test/njs_expect_test.exp index db1e597c..01a2fe16 100644 --- a/njs/test/njs_expect_test.exp +++ b/njs/test/njs_expect_test.exp @@ -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" \ -- 2.47.3