fix flow type param parsing position - fixes #24
This commit is contained in:
parent
189d2c3fa9
commit
e14e6473ff
13
acorn.js
13
acorn.js
@ -2414,7 +2414,7 @@
|
|||||||
while (!eat(close)) {
|
while (!eat(close)) {
|
||||||
first ? first = false : expect(_comma);
|
first ? first = false : expect(_comma);
|
||||||
if (tokType === _ellipsis) {
|
if (tokType === _ellipsis) {
|
||||||
elts.push(parseAssignableListItem(parseRest()));
|
elts.push(parseAssignableListItemTypes(parseRest()));
|
||||||
expect(close);
|
expect(close);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2422,14 +2422,16 @@
|
|||||||
if (allowEmpty && tokType === _comma) {
|
if (allowEmpty && tokType === _comma) {
|
||||||
elem = null;
|
elem = null;
|
||||||
} else {
|
} else {
|
||||||
elem = parseAssignableListItem(parseMaybeDefault());
|
var left = parseAssignableAtom();
|
||||||
|
parseAssignableListItemTypes(left);
|
||||||
|
elem = parseMaybeDefault(null, left);
|
||||||
}
|
}
|
||||||
elts.push(elem);
|
elts.push(elem);
|
||||||
}
|
}
|
||||||
return elts;
|
return elts;
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseAssignableListItem(param) {
|
function parseAssignableListItemTypes(param) {
|
||||||
if (eat(_question)) {
|
if (eat(_question)) {
|
||||||
param.optional = true;
|
param.optional = true;
|
||||||
}
|
}
|
||||||
@ -3000,7 +3002,7 @@
|
|||||||
// Parse an assignment expression. This includes applications of
|
// Parse an assignment expression. This includes applications of
|
||||||
// operators like `+=`.
|
// operators like `+=`.
|
||||||
|
|
||||||
function parseMaybeAssign(noIn, refShorthandDefaultPos) {
|
function parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse) {
|
||||||
var failOnShorthandAssign;
|
var failOnShorthandAssign;
|
||||||
if (!refShorthandDefaultPos) {
|
if (!refShorthandDefaultPos) {
|
||||||
refShorthandDefaultPos = {start: 0};
|
refShorthandDefaultPos = {start: 0};
|
||||||
@ -3010,6 +3012,7 @@
|
|||||||
}
|
}
|
||||||
var start = storeCurrentPos();
|
var start = storeCurrentPos();
|
||||||
var left = parseMaybeConditional(noIn, refShorthandDefaultPos);
|
var left = parseMaybeConditional(noIn, refShorthandDefaultPos);
|
||||||
|
if (afterLeftParse) afterLeftParse(left);
|
||||||
if (tokType.isAssign) {
|
if (tokType.isAssign) {
|
||||||
var node = startNodeAt(start);
|
var node = startNodeAt(start);
|
||||||
node.operator = tokVal;
|
node.operator = tokVal;
|
||||||
@ -3348,7 +3351,7 @@
|
|||||||
if (tokType === _parenL && !innerParenStart) {
|
if (tokType === _parenL && !innerParenStart) {
|
||||||
innerParenStart = tokStart;
|
innerParenStart = tokStart;
|
||||||
}
|
}
|
||||||
exprList.push(parseParenItem(parseMaybeAssign(false, refShorthandDefaultPos)));
|
exprList.push(parseMaybeAssign(false, refShorthandDefaultPos, parseParenItem));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var innerEnd = storeCurrentPos();
|
var innerEnd = storeCurrentPos();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user