simplify parentheses logic and properly parenthesise unaries - fixes #2711

This commit is contained in:
Sebastian McKenzie 2015-11-03 10:49:24 +00:00
parent 1e725f4806
commit cdeff2fbb1
3 changed files with 16 additions and 24 deletions

View File

@ -154,7 +154,15 @@ export function ClassExpression(node: Object, parent: Object): boolean {
} }
export function UnaryLike(node: Object, parent: Object): boolean { export function UnaryLike(node: Object, parent: Object): boolean {
return t.isMemberExpression(parent) && parent.object === node; if (t.isMemberExpression(parent, { object: node })) {
return true;
}
if (t.isCallExpression(parent, { callee: node }) || t.isNewExpression(parent, { callee: node })) {
return true;
}
return false;
} }
export function FunctionExpression(node: Object, parent: Object): boolean { export function FunctionExpression(node: Object, parent: Object): boolean {
@ -172,17 +180,7 @@ export function ArrowFunctionExpression(node: Object, parent: Object): boolean {
return true; return true;
} }
// (function test() {}).name; return UnaryLike(node, parent);
if (t.isMemberExpression(parent) && parent.object === node) {
return true;
}
// (function () {})();
if (t.isCallExpression(parent) && parent.callee === node) {
return true;
}
return false;
} }
export function ConditionalExpression(node: Object, parent: Object): boolean { export function ConditionalExpression(node: Object, parent: Object): boolean {
@ -194,21 +192,11 @@ export function ConditionalExpression(node: Object, parent: Object): boolean {
return true; return true;
} }
if (t.isCallExpression(parent) || t.isNewExpression(parent)) { if (t.isConditionalExpression(parent, { test: node })) {
if (parent.callee === node) {
return true;
}
}
if (t.isConditionalExpression(parent) && parent.test === node) {
return true; return true;
} }
if (t.isMemberExpression(parent) && parent.object === node) { return UnaryLike(node, parent);
return true;
}
return false;
} }
export function AssignmentExpression(node: Object): boolean { export function AssignmentExpression(node: Object): boolean {

View File

@ -3,3 +3,5 @@ delete delete i;
!!i; !!i;
+ ++i; + ++i;
- --i; - --i;
typeof a();
(typeof a)();

View File

@ -3,3 +3,5 @@ delete delete i;
!!i; !!i;
+ ++i; + ++i;
- --i; - --i;
typeof a();
(typeof a)();