From 281417ac1dfdbd40fc6cba29a59e19cd5440b1fd Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Sat, 14 Jan 2017 20:12:17 -0800 Subject: [PATCH] Fix await parenthesis (#185) This is the first time I'm adding something inside of fast-path so I'm not sure if it's correct, but it seems more correct than before! Fixes #164 --- src/fast-path.js | 8 +++++--- tests/async/__snapshots__/jsfmt.spec.js.snap | 14 ++++++++++++++ tests/async/await_parse.js | 7 +++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/fast-path.js b/src/fast-path.js index 5299ebc1..4bda096a 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -289,6 +289,7 @@ FPp.needsParens = function(assumeExpressionContext) { return true; } + case "AwaitExpression": case "YieldExpression": switch (parent.type) { case "BinaryExpression": @@ -296,13 +297,14 @@ FPp.needsParens = function(assumeExpressionContext) { case "UnaryExpression": case "SpreadElement": case "SpreadProperty": - case "CallExpression": - case "MemberExpression": case "NewExpression": case "ConditionalExpression": - case "YieldExpression": + case "MemberExpression": return true; + case "CallExpression": + return parent.callee === node; + default: return false; } diff --git a/tests/async/__snapshots__/jsfmt.spec.js.snap b/tests/async/__snapshots__/jsfmt.spec.js.snap index 53f85d5c..d0b6434b 100644 --- a/tests/async/__snapshots__/jsfmt.spec.js.snap +++ b/tests/async/__snapshots__/jsfmt.spec.js.snap @@ -459,6 +459,13 @@ console.log(x.await); var await = 3; var y = { await }; + +async function f() { (await f()).length } +async function g() { + invariant( + (await driver.navigator.getUrl()).substr(-7) + ); +} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ async function f() { await 1; @@ -514,5 +521,12 @@ console.log(x.await); var await = 3; var y = { await }; + +async function f() { + (await f()).length; +} +async function g() { + invariant((await driver.navigator.getUrl()).substr(-7)); +} " `; diff --git a/tests/async/await_parse.js b/tests/async/await_parse.js index 10149204..042e679b 100644 --- a/tests/async/await_parse.js +++ b/tests/async/await_parse.js @@ -22,3 +22,10 @@ console.log(x.await); var await = 3; var y = { await }; + +async function f() { (await f()).length } +async function g() { + invariant( + (await driver.navigator.getUrl()).substr(-7) + ); +}