Remove extra parenthesis around await inside of unary expression (#745)
Big props to @bakkot for mentioning that yield shouldn't be applied the same treatment. Fixes #728master
parent
0f34fb91eb
commit
135a3dd0a7
|
@ -354,12 +354,14 @@ FPp.needsParens = function(assumeExpressionContext) {
|
|||
}
|
||||
|
||||
case "YieldExpression":
|
||||
if (parent.type === "UnaryExpression") {
|
||||
return true;
|
||||
}
|
||||
case "AwaitExpression":
|
||||
switch (parent.type) {
|
||||
case "TaggedTemplateExpression":
|
||||
case "BinaryExpression":
|
||||
case "LogicalExpression":
|
||||
case "UnaryExpression":
|
||||
case "SpreadElement":
|
||||
case "SpreadProperty":
|
||||
case "NewExpression":
|
||||
|
|
|
@ -4,13 +4,26 @@ async function g() {
|
|||
invariant(
|
||||
(await driver.navigator.getUrl()).substr(-7)
|
||||
);
|
||||
}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
}
|
||||
function *f(){
|
||||
!(yield a);
|
||||
}
|
||||
async function f() {
|
||||
a = !(await f());
|
||||
}
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
async function f() {
|
||||
(await f()).length;
|
||||
}
|
||||
async function g() {
|
||||
invariant((await driver.navigator.getUrl()).substr(-7));
|
||||
}
|
||||
function* f() {
|
||||
!(yield a);
|
||||
}
|
||||
async function f() {
|
||||
a = !await f();
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
|
|
|
@ -3,4 +3,10 @@ async function g() {
|
|||
invariant(
|
||||
(await driver.navigator.getUrl()).substr(-7)
|
||||
);
|
||||
}
|
||||
}
|
||||
function *f(){
|
||||
!(yield a);
|
||||
}
|
||||
async function f() {
|
||||
a = !(await f());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue