aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/output.js10
-rw-r--r--test/compress/async.js22
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"
+}