Fix estree ForXStatement#left to Pattern (#18100)

This commit is contained in:
Toru Nagashima
2017-07-21 01:55:31 +09:00
committed by Wesley Wigham
parent 052ce68076
commit 239ac8e81e
2 changed files with 33 additions and 2 deletions

View File

@@ -89,6 +89,7 @@ declare var awaitExpression: ESTree.AwaitExpression;
declare var toplevelStatement: ESTree.Statement | ESTree.ModuleDeclaration;
declare var expressionOrPattern: ESTree.Expression | ESTree.Pattern;
declare var variableDeclaratorOrExpression: ESTree.VariableDeclaration | ESTree.Expression;
declare var variableDeclaratorOrPattern: ESTree.VariableDeclaration | ESTree.Pattern;
declare var literalOrIdentifier: ESTree.Literal | ESTree.Identifier;
declare var blockStatementOrExpression: ESTree.BlockStatement | ESTree.Expression;
declare var identifierOrExpression: ESTree.Identifier | ESTree.Expression;
@@ -156,7 +157,7 @@ var expressionMaybe: ESTree.Expression | null | undefined = forStatement.update;
// ForInStatement
var forInStatement: ESTree.ForInStatement;
variableDeclaratorOrExpression = forInStatement.left;
variableDeclaratorOrPattern = forInStatement.left;
expression = forInStatement.right;
// Expression
@@ -723,3 +724,33 @@ switch (moduleSpecifier.type) {
default:
never = moduleSpecifier;
}
switch (forInStatement.left.type) {
case 'Identifier':
identifier = forInStatement.left;
break;
case 'ObjectPattern':
objectPattern = forInStatement.left;
break;
case 'ArrayPattern':
arrayPattern = forInStatement.left;
break;
case 'MemberExpression':
memberExpression = forInStatement.left;
break;
}
switch (forOfStatement.left.type) {
case 'Identifier':
identifier = forOfStatement.left;
break;
case 'ObjectPattern':
objectPattern = forOfStatement.left;
break;
case 'ArrayPattern':
arrayPattern = forOfStatement.left;
break;
case 'MemberExpression':
memberExpression = forOfStatement.left;
break;
}

View File

@@ -169,7 +169,7 @@ export interface ForStatement extends BaseStatement {
}
interface BaseForXStatement extends BaseStatement {
left: VariableDeclaration | Expression;
left: VariableDeclaration | Pattern;
right: Expression;
body: Statement;
}