From: Alex Lam S.L Date: Mon, 7 Dec 2020 20:29:54 +0000 (+0000) Subject: fix corner case with parentheses around `await` (#4344) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=336336f53f7f1ba161abc7834da190504afeb27b;p=UglifyJS.git fix corner case with parentheses around `await` (#4344) --- 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" +}