[estree] update with latest spec changes (#43103)

* [estree] support async for-of

See https://github.com/estree/estree/blob/master/es2018.md#statements

* [estree] support spread properties

See https://github.com/estree/estree/blob/master/es2018.md#expressions

* [estree] support rest property patterns

See https://github.com/estree/estree/blob/master/es2018.md#patterns

* [estree] add support for ImportExpression

See https://github.com/estree/estree/blob/master/es2020.md#importexpression

* [es2020] add support for BigInt literals

See https://github.com/estree/estree/blob/master/es2020.md#bigintliteral

* Revert "[es2020] add support for BigInt literals"

This reverts commit 47134accb91cf73307d434f57acf97bc0328f39e. Supporting bigint would require TS 3.2 which requires dependency changes that can probably wait? 🤷‍♂️

* [estree] add new expression type to Union

* narrow express node by ImportExpression

Co-authored-by: spalger <spalger@users.noreply.github.com>
This commit is contained in:
Spencer 2020-03-20 10:57:41 -07:00 committed by GitHub
parent 541905dc80
commit a99eed1745
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 5 deletions

View File

@ -31,7 +31,7 @@ declare var baseExpression: ESTree.BaseExpression;
declare var thisExpression: ESTree.ThisExpression;
declare var arrayExpression: ESTree.ArrayExpression;
declare var objectExpression: ESTree.ObjectExpression;
declare var property: ESTree.Property;
declare var property: ESTree.Property | ESTree.SpreadElement;
declare var functionExpression: ESTree.FunctionExpression;
declare var sequenceExpression: ESTree.SequenceExpression;
declare var unaryExpression: ESTree.UnaryExpression;
@ -86,6 +86,7 @@ declare var exportSpecifier: ESTree.ExportSpecifier;
declare var exportDefaultDeclaration: ESTree.ExportDefaultDeclaration;
declare var exportAllDeclaration: ESTree.ExportAllDeclaration;
declare var awaitExpression: ESTree.AwaitExpression;
declare var importExpression: ESTree.ImportExpression;
declare var toplevelStatement: ESTree.Statement | ESTree.ModuleDeclaration;
declare var expressionOrPattern: ESTree.Expression | ESTree.Pattern;
@ -183,9 +184,11 @@ var propertyOrSpread: ESTree.Property | ESTree.SpreadElement
= objectExpression.properties[0];
string = property.type;
expression = property.key;
expressionOrPattern = property.value;
string = property.kind;
if (property.type === 'Property') {
expression = property.key;
expressionOrPattern = property.value;
string = property.kind;
}
// FunctionExpression
var functionExpression: ESTree.FunctionExpression;
@ -432,6 +435,9 @@ switch (node.type) {
case 'AwaitExpression':
awaitExpression = node;
break;
case 'ImportExpression':
importExpression = node;
break;
// end narrowing of Expression
case 'Property':
@ -643,6 +649,9 @@ switch (expression.type) {
case 'AwaitExpression':
awaitExpression = expression;
break;
case 'ImportExpression':
importExpression = expression;
break;
default:
never = expression;
}

View File

@ -226,7 +226,7 @@ type Expression =
LogicalExpression | MemberExpression | ConditionalExpression |
CallExpression | NewExpression | SequenceExpression | TemplateLiteral |
TaggedTemplateExpression | ClassExpression | MetaProperty | Identifier |
AwaitExpression;
AwaitExpression | ImportExpression;
export interface BaseExpression extends BaseNode { }
@ -387,6 +387,7 @@ export type UpdateOperator = "++" | "--";
export interface ForOfStatement extends BaseForXStatement {
type: "ForOfStatement";
await: boolean;
}
export interface Super extends BaseNode {
@ -518,6 +519,11 @@ export interface ImportSpecifier extends BaseModuleSpecifier {
imported: Identifier;
}
export interface ImportExpression extends BaseExpression {
type: "ImportExpression";
source: Expression;
}
export interface ImportDefaultSpecifier extends BaseModuleSpecifier {
type: "ImportDefaultSpecifier";
}