Skip to content

Commit

Permalink
fix(parser): simplified assignment expr parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
KFlash committed Aug 27, 2019
1 parent a48e9b2 commit ce89217
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3216,7 +3216,7 @@ export function parseAssignmentExpression(

const { token } = parser;

if ((token & Token.IsAssignOp) > 0) {
if ((token & Token.IsAssignOp) === Token.IsAssignOp) {
if (parser.assignable & AssignmentKind.CannotAssign) report(parser, Errors.CantAssignTo);
if (
(!isPattern && (token === Token.Assign && ((left as ESTree.Expression).type as string) === 'ArrayExpression')) ||
Expand All @@ -3229,7 +3229,9 @@ export function parseAssignmentExpression(

const right = parseExpression(parser, context, 1, 1, inGroup, parser.tokenPos, parser.linePos, parser.colPos);

left = finishNode(
parser.assignable = AssignmentKind.CannotAssign;

return finishNode(
parser,
context,
start,
Expand All @@ -3248,18 +3250,14 @@ export function parseAssignmentExpression(
right
} as any)
);

parser.assignable = AssignmentKind.CannotAssign;

return left as ESTree.Expression;
}

/** Binary expression
*
* https://tc39.github.io/ecma262/#sec-multiplicative-operators
*
*/
if ((token & Token.IsBinaryOp) > 0) {
if ((token & Token.IsBinaryOp) === Token.IsBinaryOp) {
// We start using the binary expression parser for prec >= 4 only!
left = parseBinaryExpression(parser, context, inGroup, start, line, column, 4, token, left as ESTree.Expression);
}
Expand Down

0 comments on commit ce89217

Please sign in to comment.