diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-12-07 20:29:54 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-08 04:29:54 +0800 |
commit | 336336f53f7f1ba161abc7834da190504afeb27b (patch) | |
tree | 610d966c6909345e6904920fad4019ef8fa12e21 | |
parent | 4bde50ce851b9f3c06be99e45e87185cee00ea55 (diff) | |
download | tracifyjs-336336f53f7f1ba161abc7834da190504afeb27b.tar.gz tracifyjs-336336f53f7f1ba161abc7834da190504afeb27b.zip |
fix corner case with parentheses around `await` (#4344)
-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" +} |