babel-types: add Binary alias to AssignmentExpression definition (fixes T6887)

This commit is contained in:
Henry Zhu 2015-12-27 17:01:47 -05:00
parent 2ec842d425
commit b5cf529d6b
3 changed files with 6 additions and 4 deletions

View File

@ -155,8 +155,10 @@ export function AssignmentPattern(node: Object) {
export function AssignmentExpression(node: Object, parent: Object) {
// Somewhere inside a for statement `init` node but doesn't usually
// needs a paren except for `in` expressions: `for (a in b ? a : b;;)`
// and for `ObjectPattern`: `({ f } = { f: 2 };`
let parens = this._inForStatementInit && node.operator === "in" &&
!n.needsParens(node, parent);
!n.needsParens(node, parent) ||
t.isObjectPattern(node.left);
if (parens) {
this.push("(");

View File

@ -66,7 +66,7 @@ export function Binary(node: Object, parent: Object): boolean {
return true;
}
if (t.isBinary(parent)) {
if (t.isBinary(parent) && !t.isAssignmentExpression(parent)) {
let parentOp = parent.operator;
let parentPos = PRECEDENCE[parentOp];
@ -212,7 +212,7 @@ export function ConditionalExpression(node: Object, parent: Object): boolean {
return true;
}
if (t.isBinary(parent)) {
if (t.isBinary(parent) && !t.isAssignmentExpression(parent)) {
return true;
}

View File

@ -42,7 +42,7 @@ defineType("AssignmentExpression", {
},
builder: ["operator", "left", "right"],
visitor: ["left", "right"],
aliases: ["Expression"]
aliases: ["Binary", "Expression"]
});
defineType("BinaryExpression", {