Merge pull request #18 from charliesome/pow-associativity
Fix ** operator associativity
This commit is contained in:
commit
572b98b6b9
14
acorn.js
14
acorn.js
@ -469,7 +469,7 @@
|
||||
|
||||
// '*' may be multiply or have special meaning in ES6
|
||||
var _star = {binop: 10, beforeExpr: true};
|
||||
var _exponent = {binop: 11, beforeExpr: true};
|
||||
var _exponent = {binop: 11, beforeExpr: true, rightAssociative: true};
|
||||
|
||||
// '<', '>' may be relational or have special meaning in JSX
|
||||
var _lt = {binop: 7, beforeExpr: true}, _gt = {binop: 7, beforeExpr: true};
|
||||
@ -2515,9 +2515,17 @@
|
||||
var op = tokType;
|
||||
next();
|
||||
var start = storeCurrentPos();
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec, noIn);
|
||||
if(op.rightAssociative) {
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec - 1, noIn);
|
||||
} else {
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec, noIn);
|
||||
}
|
||||
finishNode(node, (op === _logicalOR || op === _logicalAND) ? "LogicalExpression" : "BinaryExpression");
|
||||
return parseExprOp(node, leftStart, minPrec, noIn);
|
||||
if(op.rightAssociative) {
|
||||
return node;
|
||||
} else {
|
||||
return parseExprOp(node, leftStart, minPrec, noIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
return left;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user