Avoid separate handling of SpreadElement in favor of UnaryExpression parser.
This commit is contained in:
parent
ac8bdc608d
commit
72df78cc88
19
acorn.js
19
acorn.js
@ -401,8 +401,9 @@
|
|||||||
var _bracketL = {type: "[", beforeExpr: true}, _bracketR = {type: "]"}, _braceL = {type: "{", beforeExpr: true};
|
var _bracketL = {type: "[", beforeExpr: true}, _bracketR = {type: "]"}, _braceL = {type: "{", beforeExpr: true};
|
||||||
var _braceR = {type: "}"}, _parenL = {type: "(", beforeExpr: true}, _parenR = {type: ")"};
|
var _braceR = {type: "}"}, _parenL = {type: "(", beforeExpr: true}, _parenR = {type: ")"};
|
||||||
var _comma = {type: ",", beforeExpr: true}, _semi = {type: ";", beforeExpr: true};
|
var _comma = {type: ",", beforeExpr: true}, _semi = {type: ";", beforeExpr: true};
|
||||||
var _colon = {type: ":", beforeExpr: true}, _dot = {type: "."}, _ellipsis = {type: "..."}, _question = {type: "?", beforeExpr: true};
|
var _colon = {type: ":", beforeExpr: true}, _dot = {type: "."}, _question = {type: "?", beforeExpr: true};
|
||||||
var _arrow = {type: "=>", beforeExpr: true}, _bquote = {type: "`"}, _dollarBraceL = {type: "${", beforeExpr: true};
|
var _arrow = {type: "=>", beforeExpr: true}, _bquote = {type: "`"}, _dollarBraceL = {type: "${", beforeExpr: true};
|
||||||
|
var _ellipsis = {type: "...", prefix: true, beforeExpr: true};
|
||||||
|
|
||||||
// Operators. These carry several kinds of properties to help the
|
// Operators. These carry several kinds of properties to help the
|
||||||
// parser use them properly (the presence of these properties is
|
// parser use them properly (the presence of these properties is
|
||||||
@ -1949,6 +1950,8 @@
|
|||||||
function parseMaybeUnary() {
|
function parseMaybeUnary() {
|
||||||
if (tokType.prefix) {
|
if (tokType.prefix) {
|
||||||
var node = startNode(), update = tokType.isUpdate;
|
var node = startNode(), update = tokType.isUpdate;
|
||||||
|
var nodeType = tokType === _ellipsis ? "SpreadElement" :
|
||||||
|
(update ? "UpdateExpression" : "UnaryExpression");
|
||||||
node.operator = tokVal;
|
node.operator = tokVal;
|
||||||
node.prefix = true;
|
node.prefix = true;
|
||||||
tokRegexpAllowed = true;
|
tokRegexpAllowed = true;
|
||||||
@ -1958,7 +1961,7 @@
|
|||||||
else if (strict && node.operator === "delete" &&
|
else if (strict && node.operator === "delete" &&
|
||||||
node.argument.type === "Identifier")
|
node.argument.type === "Identifier")
|
||||||
raise(node.start, "Deleting local variable in strict mode");
|
raise(node.start, "Deleting local variable in strict mode");
|
||||||
return finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
|
return finishNode(node, nodeType);
|
||||||
}
|
}
|
||||||
var start = storeCurrentPos();
|
var start = storeCurrentPos();
|
||||||
var expr = parseExprSubscripts();
|
var expr = parseExprSubscripts();
|
||||||
@ -2115,9 +2118,6 @@
|
|||||||
case _new:
|
case _new:
|
||||||
return parseNew();
|
return parseNew();
|
||||||
|
|
||||||
case _ellipsis:
|
|
||||||
return parseSpread();
|
|
||||||
|
|
||||||
case _bquote:
|
case _bquote:
|
||||||
return parseTemplate();
|
return parseTemplate();
|
||||||
|
|
||||||
@ -2140,15 +2140,6 @@
|
|||||||
return finishNode(node, "NewExpression");
|
return finishNode(node, "NewExpression");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse spread element '...expr'
|
|
||||||
|
|
||||||
function parseSpread() {
|
|
||||||
var node = startNode();
|
|
||||||
next();
|
|
||||||
node.argument = parseExpression(true);
|
|
||||||
return finishNode(node, "SpreadElement");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse template expression.
|
// Parse template expression.
|
||||||
|
|
||||||
function parseTemplate() {
|
function parseTemplate() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user