Add handling parens for extends clause in generator (#6897)
This commit is contained in:
@@ -27,6 +27,10 @@ const PRECEDENCE = {
|
||||
"**": 10,
|
||||
};
|
||||
|
||||
const isClassExtendsClause = (node: Object, parent: Object): boolean =>
|
||||
(t.isClassDeclaration(parent) || t.isClassExpression(parent)) &&
|
||||
parent.superClass === node;
|
||||
|
||||
export function NullableTypeAnnotation(node: Object, parent: Object): boolean {
|
||||
return t.isArrayTypeAnnotation(parent);
|
||||
}
|
||||
@@ -35,7 +39,10 @@ export { NullableTypeAnnotation as FunctionTypeAnnotation };
|
||||
|
||||
export function UpdateExpression(node: Object, parent: Object): boolean {
|
||||
// (foo++).test()
|
||||
return t.isMemberExpression(parent) && parent.object === node;
|
||||
return (
|
||||
(t.isMemberExpression(parent) && parent.object === node) ||
|
||||
isClassExtendsClause(node, parent)
|
||||
);
|
||||
}
|
||||
|
||||
export function ObjectExpression(
|
||||
@@ -62,6 +69,10 @@ export function Binary(node: Object, parent: Object): boolean {
|
||||
return parent.left === node;
|
||||
}
|
||||
|
||||
if (isClassExtendsClause(node, parent)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (
|
||||
((t.isCallExpression(parent) || t.isNewExpression(parent)) &&
|
||||
parent.callee === node) ||
|
||||
@@ -151,7 +162,8 @@ export function YieldExpression(node: Object, parent: Object): boolean {
|
||||
t.isCallExpression(parent) ||
|
||||
t.isMemberExpression(parent) ||
|
||||
t.isNewExpression(parent) ||
|
||||
(t.isConditionalExpression(parent) && node === parent.test)
|
||||
(t.isConditionalExpression(parent) && node === parent.test) ||
|
||||
isClassExtendsClause(node, parent)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -170,7 +182,8 @@ export function UnaryLike(node: Object, parent: Object): boolean {
|
||||
t.isMemberExpression(parent, { object: node }) ||
|
||||
t.isCallExpression(parent, { callee: node }) ||
|
||||
t.isNewExpression(parent, { callee: node }) ||
|
||||
t.isBinaryExpression(parent, { operator: "**", left: node })
|
||||
t.isBinaryExpression(parent, { operator: "**", left: node }) ||
|
||||
isClassExtendsClause(node, parent)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -210,6 +223,10 @@ export function AssignmentExpression(node: Object): boolean {
|
||||
}
|
||||
}
|
||||
|
||||
export function NewExpression(node: Object, parent: Object): boolean {
|
||||
return isClassExtendsClause(node, parent);
|
||||
}
|
||||
|
||||
// Walk up the print stack to determine if our node can come first
|
||||
// in statement.
|
||||
function isFirstInStatement(
|
||||
|
||||
Reference in New Issue
Block a user