diff --git a/types/estree/estree-tests.ts b/types/estree/estree-tests.ts index ace67225a4..ac2516f18b 100644 --- a/types/estree/estree-tests.ts +++ b/types/estree/estree-tests.ts @@ -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; +} diff --git a/types/estree/index.d.ts b/types/estree/index.d.ts index b7a4005add..64731a6895 100644 --- a/types/estree/index.d.ts +++ b/types/estree/index.d.ts @@ -169,7 +169,7 @@ export interface ForStatement extends BaseStatement { } interface BaseForXStatement extends BaseStatement { - left: VariableDeclaration | Expression; + left: VariableDeclaration | Pattern; right: Expression; body: Statement; }