diff options
-rw-r--r-- | lib/output.js | 10 | ||||
-rw-r--r-- | test/compress/async.js | 22 |
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/output.js b/lib/output.js index bf243862..a6d0d0da 100644 --- a/lib/output.js +++ b/lib/output.js @@ -810,6 +810,16 @@ function OutputStream(options) { return needs_parens_assign_cond(this, output); }); + PARENS(AST_Await, function(output) { + var p = output.parent(); + // new (await foo) + // (await foo)(bar) + if (p instanceof AST_Call) return p.expression === this; + // (await foo).prop + // (await foo)["prop"] + if (p instanceof AST_PropAccess) return p.expression === this; + }); + /* -----[ PRINTERS ]----- */ DEFPRINT(AST_Directive, function(output) { diff --git a/test/compress/async.js b/test/compress/async.js index cab1f92a..ca604034 100644 --- a/test/compress/async.js +++ b/test/compress/async.js @@ -306,3 +306,25 @@ issue_4340: { expect_stdout: "PASS" node_version: ">=8" } + +call_expression: { + input: { + console.log(typeof async function(log) { + (await log)("FAIL"); + }(console.log).then); + } + expect_exact: 'console.log(typeof async function(log){(await log)("FAIL")}(console.log).then);' + expect_stdout: "function" + node_version: ">=8" +} + +property_access_expression: { + input: { + console.log(typeof async function(con) { + (await con).log("FAIL"); + }(console).then); + } + expect_exact: 'console.log(typeof async function(con){(await con).log("FAIL")}(console).then);' + expect_stdout: "function" + node_version: ">=8" +} |