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) {
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"
+}