Flow opaque type 6.x backport (#6081)

* Flow opaque type backport

* Add tests for strip types, comments, and babel-generator

* Fix failing tests, run scripts

* Bump babylon to 6.18.0
This commit is contained in:
jbrown215
2017-08-15 16:44:15 -04:00
committed by Henry Zhu
parent 2dba910b9e
commit c28465e03e
16 changed files with 353 additions and 78 deletions

View File

@@ -149,8 +149,8 @@ declare class BabelNodeFunctionDeclaration extends BabelNode {
body: BabelNodeBlockStatement;
generator?: boolean;
async?: boolean;
returnType: any;
typeParameters: any;
returnType?: any;
typeParameters?: any;
}
declare class BabelNodeFunctionExpression extends BabelNode {
@@ -160,14 +160,15 @@ declare class BabelNodeFunctionExpression extends BabelNode {
body: BabelNodeBlockStatement;
generator?: boolean;
async?: boolean;
returnType: any;
typeParameters: any;
returnType?: any;
typeParameters?: any;
}
declare class BabelNodeIdentifier extends BabelNode {
type: "Identifier";
name: any;
typeAnnotation: any;
decorators?: any;
typeAnnotation?: any;
}
declare class BabelNodeIfStatement extends BabelNode {
@@ -244,20 +245,20 @@ declare class BabelNodeObjectMethod extends BabelNode {
kind?: any;
computed?: boolean;
key: any;
decorators: any;
decorators?: any;
body: BabelNodeBlockStatement;
generator?: boolean;
async?: boolean;
params: any;
returnType: any;
typeParameters: any;
returnType?: any;
typeParameters?: any;
}
declare class BabelNodeObjectProperty extends BabelNode {
type: "ObjectProperty";
computed?: boolean;
key: any;
value: BabelNodeExpression;
value: BabelNodeExpression | BabelNodePattern | BabelNodeRestElement;
shorthand?: boolean;
decorators?: any;
}
@@ -265,6 +266,7 @@ declare class BabelNodeObjectProperty extends BabelNode {
declare class BabelNodeRestElement extends BabelNode {
type: "RestElement";
argument: BabelNodeLVal;
decorators?: any;
typeAnnotation: any;
}
@@ -301,7 +303,7 @@ declare class BabelNodeThrowStatement extends BabelNode {
declare class BabelNodeTryStatement extends BabelNode {
type: "TryStatement";
body: BabelNodeBlockStatement;
body?: ?BabelNodeBlockStatement;
handler?: any;
finalizer?: ?BabelNodeBlockStatement;
block: any;
@@ -349,11 +351,13 @@ declare class BabelNodeAssignmentPattern extends BabelNode {
type: "AssignmentPattern";
left: BabelNodeIdentifier;
right: BabelNodeExpression;
decorators?: any;
}
declare class BabelNodeArrayPattern extends BabelNode {
type: "ArrayPattern";
elements: any;
decorators?: any;
typeAnnotation: any;
}
@@ -362,7 +366,8 @@ declare class BabelNodeArrowFunctionExpression extends BabelNode {
params: any;
body: BabelNodeBlockStatement | BabelNodeExpression;
async?: boolean;
returnType: any;
returnType?: any;
typeParameters?: any;
}
declare class BabelNodeClassBody extends BabelNode {
@@ -376,9 +381,9 @@ declare class BabelNodeClassDeclaration extends BabelNode {
body: BabelNodeClassBody;
superClass?: ?BabelNodeExpression;
decorators: any;
mixins: any;
typeParameters: any;
superTypeParameters: any;
mixins?: any;
typeParameters?: any;
superTypeParameters?: any;
}
declare class BabelNodeClassExpression extends BabelNode {
@@ -387,9 +392,9 @@ declare class BabelNodeClassExpression extends BabelNode {
body: BabelNodeClassBody;
superClass?: ?BabelNodeExpression;
decorators: any;
mixins: any;
typeParameters: any;
superTypeParameters: any;
mixins?: any;
typeParameters?: any;
superTypeParameters?: any;
}
declare class BabelNodeExportAllDeclaration extends BabelNode {
@@ -412,8 +417,7 @@ declare class BabelNodeExportNamedDeclaration extends BabelNode {
declare class BabelNodeExportSpecifier extends BabelNode {
type: "ExportSpecifier";
local: BabelNodeIdentifier;
imported: BabelNodeIdentifier;
exported: any;
exported: BabelNodeIdentifier;
}
declare class BabelNodeForOfStatement extends BabelNode {
@@ -443,6 +447,7 @@ declare class BabelNodeImportSpecifier extends BabelNode {
type: "ImportSpecifier";
local: BabelNodeIdentifier;
imported: BabelNodeIdentifier;
importKind?: null | "type" | "typeof";
}
declare class BabelNodeMetaProperty extends BabelNode {
@@ -460,14 +465,15 @@ declare class BabelNodeClassMethod extends BabelNode {
body: BabelNodeBlockStatement;
generator?: boolean;
async?: boolean;
decorators: any;
returnType: any;
typeParameters: any;
decorators?: any;
returnType?: any;
typeParameters?: any;
}
declare class BabelNodeObjectPattern extends BabelNode {
type: "ObjectPattern";
properties: any;
decorators?: any;
typeAnnotation: any;
}
@@ -533,6 +539,7 @@ declare class BabelNodeClassImplements extends BabelNode {
declare class BabelNodeClassProperty extends BabelNode {
type: "ClassProperty";
computed?: boolean;
key: any;
value: any;
typeAnnotation: any;
@@ -576,6 +583,13 @@ declare class BabelNodeDeclareTypeAlias extends BabelNode {
right: any;
}
declare class BabelNodeDeclareOpaqueType extends BabelNode {
type: "DeclareOpaqueType";
id: any;
typeParameters: any;
supertype: any;
}
declare class BabelNodeDeclareVariable extends BabelNode {
type: "DeclareVariable";
id: any;
@@ -627,6 +641,10 @@ declare class BabelNodeMixedTypeAnnotation extends BabelNode {
type: "MixedTypeAnnotation";
}
declare class BabelNodeEmptyTypeAnnotation extends BabelNode {
type: "EmptyTypeAnnotation";
}
declare class BabelNodeNullableTypeAnnotation extends BabelNode {
type: "NullableTypeAnnotation";
typeAnnotation: any;
@@ -669,6 +687,14 @@ declare class BabelNodeTypeAlias extends BabelNode {
right: any;
}
declare class BabelNodeOpaqueType extends BabelNode {
type: "OpaqueType";
id: any;
typeParameters: any;
impltype: any;
supertype: any;
}
declare class BabelNodeTypeAnnotation extends BabelNode {
type: "TypeAnnotation";
typeAnnotation: any;
@@ -680,6 +706,11 @@ declare class BabelNodeTypeCastExpression extends BabelNode {
typeAnnotation: any;
}
declare class BabelNodeTypeParameter extends BabelNode {
type: "TypeParameter";
bound: any;
}
declare class BabelNodeTypeParameterDeclaration extends BabelNode {
type: "TypeParameterDeclaration";
params: any;
@@ -715,6 +746,11 @@ declare class BabelNodeObjectTypeProperty extends BabelNode {
value: any;
}
declare class BabelNodeObjectTypeSpreadProperty extends BabelNode {
type: "ObjectTypeSpreadProperty";
argument: any;
}
declare class BabelNodeQualifiedTypeIdentifier extends BabelNode {
type: "QualifiedTypeIdentifier";
id: any;
@@ -758,6 +794,11 @@ declare class BabelNodeJSXExpressionContainer extends BabelNode {
expression: BabelNodeExpression;
}
declare class BabelNodeJSXSpreadChild extends BabelNode {
type: "JSXSpreadChild";
expression: BabelNodeExpression;
}
declare class BabelNodeJSXIdentifier extends BabelNode {
type: "JSXIdentifier";
name: string;
@@ -806,12 +847,23 @@ declare class BabelNodeAwaitExpression extends BabelNode {
argument: BabelNodeExpression;
}
declare class BabelNodeForAwaitStatement extends BabelNode {
type: "ForAwaitStatement";
left: BabelNodeVariableDeclaration | BabelNodeLVal;
right: BabelNodeExpression;
body: BabelNodeStatement;
}
declare class BabelNodeBindExpression extends BabelNode {
type: "BindExpression";
object: any;
callee: any;
}
declare class BabelNodeImport extends BabelNode {
type: "Import";
}
declare class BabelNodeDecorator extends BabelNode {
type: "Decorator";
expression: BabelNodeExpression;
@@ -842,28 +894,28 @@ declare class BabelNodeSpreadProperty extends BabelNode {
argument: BabelNodeExpression;
}
type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeParenthesizedExpression | BabelNodeAwaitExpression | BabelNodeBindExpression | BabelNodeDoExpression;
type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeParenthesizedExpression | BabelNodeAwaitExpression | BabelNodeBindExpression | BabelNodeImport | BabelNodeDoExpression;
type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression;
type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassDeclaration | BabelNodeClassExpression | BabelNodeForOfStatement | BabelNodeClassMethod;
type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod;
type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassDeclaration | BabelNodeClassExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeForAwaitStatement;
type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeForAwaitStatement;
type BabelNodeBlock = BabelNodeBlockStatement | BabelNodeProgram;
type BabelNodeStatement = BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeReturnStatement | BabelNodeSwitchStatement | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeVariableDeclaration | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias;
type BabelNodeStatement = BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeReturnStatement | BabelNodeSwitchStatement | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeVariableDeclaration | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias | BabelNodeOpaqueType | BabelNodeForAwaitStatement;
type BabelNodeTerminatorless = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement | BabelNodeYieldExpression | BabelNodeAwaitExpression;
type BabelNodeCompletionStatement = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement;
type BabelNodeConditional = BabelNodeConditionalExpression | BabelNodeIfStatement;
type BabelNodeLoop = BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeWhileStatement | BabelNodeForOfStatement;
type BabelNodeLoop = BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeWhileStatement | BabelNodeForOfStatement | BabelNodeForAwaitStatement;
type BabelNodeWhile = BabelNodeDoWhileStatement | BabelNodeWhileStatement;
type BabelNodeExpressionWrapper = BabelNodeExpressionStatement | BabelNodeTypeCastExpression | BabelNodeParenthesizedExpression;
type BabelNodeFor = BabelNodeForInStatement | BabelNodeForStatement | BabelNodeForOfStatement;
type BabelNodeForXStatement = BabelNodeForInStatement | BabelNodeForOfStatement;
type BabelNodeFor = BabelNodeForInStatement | BabelNodeForStatement | BabelNodeForOfStatement | BabelNodeForAwaitStatement;
type BabelNodeForXStatement = BabelNodeForInStatement | BabelNodeForOfStatement | BabelNodeForAwaitStatement;
type BabelNodeFunction = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod;
type BabelNodeFunctionParent = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod;
type BabelNodePureish = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeArrowFunctionExpression | BabelNodeClassDeclaration | BabelNodeClassExpression;
type BabelNodeDeclaration = BabelNodeFunctionDeclaration | BabelNodeVariableDeclaration | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias;
type BabelNodeDeclaration = BabelNodeFunctionDeclaration | BabelNodeVariableDeclaration | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias | BabelNodeOpaqueType;
type BabelNodeLVal = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern;
type BabelNodeLiteral = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeTemplateLiteral;
type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXOpeningElement;
type BabelNodeUserWhitespacable = BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty;
type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXOpeningElement | BabelNodeJSXText;
type BabelNodeUserWhitespacable = BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty;
type BabelNodeMethod = BabelNodeObjectMethod | BabelNodeClassMethod;
type BabelNodeObjectMember = BabelNodeObjectMethod | BabelNodeObjectProperty;
type BabelNodeProperty = BabelNodeObjectProperty | BabelNodeClassProperty;
@@ -873,10 +925,10 @@ type BabelNodeClass = BabelNodeClassDeclaration | BabelNodeClassExpression;
type BabelNodeModuleDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration;
type BabelNodeExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration;
type BabelNodeModuleSpecifier = BabelNodeExportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier;
type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeClassProperty | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeExistentialTypeParam | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumericLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation;
type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation;
type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias;
type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText;
type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeExistentialTypeParam | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumericLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeOpaqueType | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameter | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation;
type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation;
type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias | BabelNodeOpaqueType;
type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText;
declare module "babel-types" {
declare function arrayExpression(elements?: any): BabelNodeArrayExpression;
@@ -897,9 +949,9 @@ declare module "babel-types" {
declare function file(program: BabelNodeProgram, comments: any, tokens: any): BabelNodeFile;
declare function forInStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForInStatement;
declare function forStatement(init?: ?BabelNodeVariableDeclaration | BabelNodeExpression, test?: ?BabelNodeExpression, update?: ?BabelNodeExpression, body: BabelNodeStatement): BabelNodeForStatement;
declare function functionDeclaration(id: BabelNodeIdentifier, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, returnType: any, typeParameters: any): BabelNodeFunctionDeclaration;
declare function functionExpression(id?: ?BabelNodeIdentifier, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, returnType: any, typeParameters: any): BabelNodeFunctionExpression;
declare function identifier(name: any, typeAnnotation: any): BabelNodeIdentifier;
declare function functionDeclaration(id: BabelNodeIdentifier, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, returnType?: any, typeParameters?: any): BabelNodeFunctionDeclaration;
declare function functionExpression(id?: ?BabelNodeIdentifier, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, returnType?: any, typeParameters?: any): BabelNodeFunctionExpression;
declare function identifier(name: any, decorators?: any, typeAnnotation?: any): BabelNodeIdentifier;
declare function ifStatement(test: BabelNodeExpression, consequent: BabelNodeStatement, alternate?: ?BabelNodeStatement): BabelNodeIfStatement;
declare function labeledStatement(label: BabelNodeIdentifier, body: BabelNodeStatement): BabelNodeLabeledStatement;
declare function stringLiteral(value: string): BabelNodeStringLiteral;
@@ -912,40 +964,40 @@ declare module "babel-types" {
declare function newExpression(callee: BabelNodeExpression, _arguments: any): BabelNodeNewExpression;
declare function program(directives?: any, body: any): BabelNodeProgram;
declare function objectExpression(properties: any): BabelNodeObjectExpression;
declare function objectMethod(kind?: any, computed?: boolean, key: any, decorators: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, params: any, returnType: any, typeParameters: any): BabelNodeObjectMethod;
declare function objectProperty(computed?: boolean, key: any, value: BabelNodeExpression, shorthand?: boolean, decorators?: any): BabelNodeObjectProperty;
declare function restElement(argument: BabelNodeLVal, typeAnnotation: any): BabelNodeRestElement;
declare function objectMethod(kind?: any, computed?: boolean, key: any, decorators?: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, params: any, returnType?: any, typeParameters?: any): BabelNodeObjectMethod;
declare function objectProperty(computed?: boolean, key: any, value: BabelNodeExpression | BabelNodePattern | BabelNodeRestElement, shorthand?: boolean, decorators?: any): BabelNodeObjectProperty;
declare function restElement(argument: BabelNodeLVal, decorators?: any, typeAnnotation: any): BabelNodeRestElement;
declare function returnStatement(argument?: ?BabelNodeExpression): BabelNodeReturnStatement;
declare function sequenceExpression(expressions: any): BabelNodeSequenceExpression;
declare function switchCase(test?: ?BabelNodeExpression, consequent: any): BabelNodeSwitchCase;
declare function switchStatement(discriminant: BabelNodeExpression, cases: any): BabelNodeSwitchStatement;
declare function thisExpression(): BabelNodeThisExpression;
declare function throwStatement(argument: BabelNodeExpression): BabelNodeThrowStatement;
declare function tryStatement(body: BabelNodeBlockStatement, handler?: any, finalizer?: ?BabelNodeBlockStatement, block: any): BabelNodeTryStatement;
declare function tryStatement(body?: ?BabelNodeBlockStatement, handler?: any, finalizer?: ?BabelNodeBlockStatement, block: any): BabelNodeTryStatement;
declare function unaryExpression(prefix?: boolean, argument: BabelNodeExpression, operator: "void" | "delete" | "!" | "+" | "-" | "++" | "--" | "~" | "typeof"): BabelNodeUnaryExpression;
declare function updateExpression(prefix?: boolean, argument: BabelNodeExpression, operator: "++" | "--"): BabelNodeUpdateExpression;
declare function variableDeclaration(kind: any, declarations: any): BabelNodeVariableDeclaration;
declare function variableDeclarator(id: BabelNodeLVal, init?: ?BabelNodeExpression): BabelNodeVariableDeclarator;
declare function whileStatement(test: BabelNodeExpression, body: BabelNodeBlockStatement | BabelNodeStatement): BabelNodeWhileStatement;
declare function withStatement(object: any, body: BabelNodeBlockStatement | BabelNodeStatement): BabelNodeWithStatement;
declare function assignmentPattern(left: BabelNodeIdentifier, right: BabelNodeExpression): BabelNodeAssignmentPattern;
declare function arrayPattern(elements: any, typeAnnotation: any): BabelNodeArrayPattern;
declare function arrowFunctionExpression(params: any, body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean, returnType: any): BabelNodeArrowFunctionExpression;
declare function assignmentPattern(left: BabelNodeIdentifier, right: BabelNodeExpression, decorators?: any): BabelNodeAssignmentPattern;
declare function arrayPattern(elements: any, decorators?: any, typeAnnotation: any): BabelNodeArrayPattern;
declare function arrowFunctionExpression(params: any, body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean, returnType?: any, typeParameters?: any): BabelNodeArrowFunctionExpression;
declare function classBody(body: any): BabelNodeClassBody;
declare function classDeclaration(id: BabelNodeIdentifier, body: BabelNodeClassBody, superClass?: ?BabelNodeExpression, decorators: any, mixins: any, typeParameters: any, superTypeParameters: any, _implements: any): BabelNodeClassDeclaration;
declare function classExpression(id?: ?BabelNodeIdentifier, body: BabelNodeClassBody, superClass?: ?BabelNodeExpression, decorators: any, mixins: any, typeParameters: any, superTypeParameters: any, _implements: any): BabelNodeClassExpression;
declare function classDeclaration(id: BabelNodeIdentifier, body: BabelNodeClassBody, superClass?: ?BabelNodeExpression, decorators: any, mixins?: any, typeParameters?: any, superTypeParameters?: any, _implements?: any): BabelNodeClassDeclaration;
declare function classExpression(id?: ?BabelNodeIdentifier, body: BabelNodeClassBody, superClass?: ?BabelNodeExpression, decorators: any, mixins?: any, typeParameters?: any, superTypeParameters?: any, _implements?: any): BabelNodeClassExpression;
declare function exportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeExportAllDeclaration;
declare function exportDefaultDeclaration(declaration: BabelNodeFunctionDeclaration | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration;
declare function exportNamedDeclaration(declaration?: ?BabelNodeDeclaration, specifiers: any, source?: ?BabelNodeStringLiteral): BabelNodeExportNamedDeclaration;
declare function exportSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier, exported: any): BabelNodeExportSpecifier;
declare function exportSpecifier(local: BabelNodeIdentifier, exported: BabelNodeIdentifier): BabelNodeExportSpecifier;
declare function forOfStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForOfStatement;
declare function importDeclaration(specifiers: any, source: BabelNodeStringLiteral): BabelNodeImportDeclaration;
declare function importDefaultSpecifier(local: BabelNodeIdentifier): BabelNodeImportDefaultSpecifier;
declare function importNamespaceSpecifier(local: BabelNodeIdentifier): BabelNodeImportNamespaceSpecifier;
declare function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier): BabelNodeImportSpecifier;
declare function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier, importKind?: null | "type" | "typeof"): BabelNodeImportSpecifier;
declare function metaProperty(meta: string, property: string): BabelNodeMetaProperty;
declare function classMethod(kind?: any, computed?: boolean, _static?: boolean, key: any, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, decorators: any, returnType: any, typeParameters: any): BabelNodeClassMethod;
declare function objectPattern(properties: any, typeAnnotation: any): BabelNodeObjectPattern;
declare function classMethod(kind?: any, computed?: boolean, _static?: boolean, key: any, params: any, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean, decorators?: any, returnType?: any, typeParameters?: any): BabelNodeClassMethod;
declare function objectPattern(properties: any, decorators?: any, typeAnnotation: any): BabelNodeObjectPattern;
declare function spreadElement(argument: BabelNodeExpression): BabelNodeSpreadElement;
declare function taggedTemplateExpression(tag: BabelNodeExpression, quasi: BabelNodeTemplateLiteral): BabelNodeTaggedTemplateExpression;
declare function templateElement(value: any, tail?: boolean): BabelNodeTemplateElement;
@@ -957,13 +1009,14 @@ declare module "babel-types" {
declare function booleanLiteralTypeAnnotation(): BabelNodeBooleanLiteralTypeAnnotation;
declare function nullLiteralTypeAnnotation(): BabelNodeNullLiteralTypeAnnotation;
declare function classImplements(id: any, typeParameters: any): BabelNodeClassImplements;
declare function classProperty(key: any, value: any, typeAnnotation: any, decorators: any): BabelNodeClassProperty;
declare function classProperty(computed?: boolean, key: any, value: any, typeAnnotation: any, decorators: any): BabelNodeClassProperty;
declare function declareClass(id: any, typeParameters: any, _extends: any, body: any): BabelNodeDeclareClass;
declare function declareFunction(id: any): BabelNodeDeclareFunction;
declare function declareInterface(id: any, typeParameters: any, _extends: any, body: any): BabelNodeDeclareInterface;
declare function declareModule(id: any, body: any): BabelNodeDeclareModule;
declare function declareModuleExports(typeAnnotation: any): BabelNodeDeclareModuleExports;
declare function declareTypeAlias(id: any, typeParameters: any, right: any): BabelNodeDeclareTypeAlias;
declare function declareOpaqueType(id: any, typeParameters: any, supertype: any): BabelNodeDeclareOpaqueType;
declare function declareVariable(id: any): BabelNodeDeclareVariable;
declare function existentialTypeParam(): BabelNodeExistentialTypeParam;
declare function functionTypeAnnotation(typeParameters: any, params: any, rest: any, returnType: any): BabelNodeFunctionTypeAnnotation;
@@ -973,6 +1026,7 @@ declare module "babel-types" {
declare function interfaceDeclaration(id: any, typeParameters: any, _extends: any, body: any): BabelNodeInterfaceDeclaration;
declare function intersectionTypeAnnotation(types: any): BabelNodeIntersectionTypeAnnotation;
declare function mixedTypeAnnotation(): BabelNodeMixedTypeAnnotation;
declare function emptyTypeAnnotation(): BabelNodeEmptyTypeAnnotation;
declare function nullableTypeAnnotation(typeAnnotation: any): BabelNodeNullableTypeAnnotation;
declare function numericLiteralTypeAnnotation(): BabelNodeNumericLiteralTypeAnnotation;
declare function numberTypeAnnotation(): BabelNodeNumberTypeAnnotation;
@@ -982,14 +1036,17 @@ declare module "babel-types" {
declare function tupleTypeAnnotation(types: any): BabelNodeTupleTypeAnnotation;
declare function typeofTypeAnnotation(argument: any): BabelNodeTypeofTypeAnnotation;
declare function typeAlias(id: any, typeParameters: any, right: any): BabelNodeTypeAlias;
declare function opaqueType(id: any, typeParameters: any, impltype: any, supertype: any): BabelNodeOpaqueType;
declare function typeAnnotation(typeAnnotation: any): BabelNodeTypeAnnotation;
declare function typeCastExpression(expression: any, typeAnnotation: any): BabelNodeTypeCastExpression;
declare function typeParameter(bound: any): BabelNodeTypeParameter;
declare function typeParameterDeclaration(params: any): BabelNodeTypeParameterDeclaration;
declare function typeParameterInstantiation(params: any): BabelNodeTypeParameterInstantiation;
declare function objectTypeAnnotation(properties: any, indexers: any, callProperties: any): BabelNodeObjectTypeAnnotation;
declare function objectTypeCallProperty(value: any): BabelNodeObjectTypeCallProperty;
declare function objectTypeIndexer(id: any, key: any, value: any): BabelNodeObjectTypeIndexer;
declare function objectTypeProperty(key: any, value: any): BabelNodeObjectTypeProperty;
declare function objectTypeSpreadProperty(argument: any): BabelNodeObjectTypeSpreadProperty;
declare function qualifiedTypeIdentifier(id: any, qualification: any): BabelNodeQualifiedTypeIdentifier;
declare function unionTypeAnnotation(types: any): BabelNodeUnionTypeAnnotation;
declare function voidTypeAnnotation(): BabelNodeVoidTypeAnnotation;
@@ -998,6 +1055,7 @@ declare module "babel-types" {
declare function jSXElement(openingElement: BabelNodeJSXOpeningElement, closingElement?: ?BabelNodeJSXClosingElement, children: any, selfClosing: any): BabelNodeJSXElement;
declare function jSXEmptyExpression(): BabelNodeJSXEmptyExpression;
declare function jSXExpressionContainer(expression: BabelNodeExpression): BabelNodeJSXExpressionContainer;
declare function jSXSpreadChild(expression: BabelNodeExpression): BabelNodeJSXSpreadChild;
declare function jSXIdentifier(name: string): BabelNodeJSXIdentifier;
declare function jSXMemberExpression(object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier, property: BabelNodeJSXIdentifier): BabelNodeJSXMemberExpression;
declare function jSXNamespacedName(namespace: BabelNodeJSXIdentifier, name: BabelNodeJSXIdentifier): BabelNodeJSXNamespacedName;
@@ -1007,7 +1065,9 @@ declare module "babel-types" {
declare function noop(): BabelNodeNoop;
declare function parenthesizedExpression(expression: BabelNodeExpression): BabelNodeParenthesizedExpression;
declare function awaitExpression(argument: BabelNodeExpression): BabelNodeAwaitExpression;
declare function forAwaitStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForAwaitStatement;
declare function bindExpression(object: any, callee: any): BabelNodeBindExpression;
declare function import(): BabelNodeImport;
declare function decorator(expression: BabelNodeExpression): BabelNodeDecorator;
declare function doExpression(body: BabelNodeBlockStatement): BabelNodeDoExpression;
declare function exportDefaultSpecifier(exported: BabelNodeIdentifier): BabelNodeExportDefaultSpecifier;
@@ -1100,6 +1160,7 @@ declare module "babel-types" {
declare function isDeclareModule(node: Object, opts?: Object): boolean;
declare function isDeclareModuleExports(node: Object, opts?: Object): boolean;
declare function isDeclareTypeAlias(node: Object, opts?: Object): boolean;
declare function isDeclareOpaqueType(node: Object, opts?: Object): boolean;
declare function isDeclareVariable(node: Object, opts?: Object): boolean;
declare function isExistentialTypeParam(node: Object, opts?: Object): boolean;
declare function isFunctionTypeAnnotation(node: Object, opts?: Object): boolean;
@@ -1109,6 +1170,7 @@ declare module "babel-types" {
declare function isInterfaceDeclaration(node: Object, opts?: Object): boolean;
declare function isIntersectionTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isMixedTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isEmptyTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isNullableTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isNumericLiteralTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isNumberTypeAnnotation(node: Object, opts?: Object): boolean;
@@ -1118,14 +1180,17 @@ declare module "babel-types" {
declare function isTupleTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isTypeofTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isTypeAlias(node: Object, opts?: Object): boolean;
declare function isOpaqueType(node: Object, opts?: Object): boolean;
declare function isTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isTypeCastExpression(node: Object, opts?: Object): boolean;
declare function isTypeParameter(node: Object, opts?: Object): boolean;
declare function isTypeParameterDeclaration(node: Object, opts?: Object): boolean;
declare function isTypeParameterInstantiation(node: Object, opts?: Object): boolean;
declare function isObjectTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isObjectTypeCallProperty(node: Object, opts?: Object): boolean;
declare function isObjectTypeIndexer(node: Object, opts?: Object): boolean;
declare function isObjectTypeProperty(node: Object, opts?: Object): boolean;
declare function isObjectTypeSpreadProperty(node: Object, opts?: Object): boolean;
declare function isQualifiedTypeIdentifier(node: Object, opts?: Object): boolean;
declare function isUnionTypeAnnotation(node: Object, opts?: Object): boolean;
declare function isVoidTypeAnnotation(node: Object, opts?: Object): boolean;
@@ -1134,6 +1199,7 @@ declare module "babel-types" {
declare function isJSXElement(node: Object, opts?: Object): boolean;
declare function isJSXEmptyExpression(node: Object, opts?: Object): boolean;
declare function isJSXExpressionContainer(node: Object, opts?: Object): boolean;
declare function isJSXSpreadChild(node: Object, opts?: Object): boolean;
declare function isJSXIdentifier(node: Object, opts?: Object): boolean;
declare function isJSXMemberExpression(node: Object, opts?: Object): boolean;
declare function isJSXNamespacedName(node: Object, opts?: Object): boolean;
@@ -1143,7 +1209,9 @@ declare module "babel-types" {
declare function isNoop(node: Object, opts?: Object): boolean;
declare function isParenthesizedExpression(node: Object, opts?: Object): boolean;
declare function isAwaitExpression(node: Object, opts?: Object): boolean;
declare function isForAwaitStatement(node: Object, opts?: Object): boolean;
declare function isBindExpression(node: Object, opts?: Object): boolean;
declare function isImport(node: Object, opts?: Object): boolean;
declare function isDecorator(node: Object, opts?: Object): boolean;
declare function isDoExpression(node: Object, opts?: Object): boolean;
declare function isExportDefaultSpecifier(node: Object, opts?: Object): boolean;
@@ -1187,14 +1255,4 @@ declare module "babel-types" {
declare function isJSX(node: Object, opts?: Object): boolean;
declare function isNumberLiteral(node: Object, opts?: Object): boolean;
declare function isRegexLiteral(node: Object, opts?: Object): boolean;
declare function isReferencedIdentifier(node: Object, opts?: Object): boolean;
declare function isReferencedMemberExpression(node: Object, opts?: Object): boolean;
declare function isBindingIdentifier(node: Object, opts?: Object): boolean;
declare function isScope(node: Object, opts?: Object): boolean;
declare function isReferenced(node: Object, opts?: Object): boolean;
declare function isBlockScoped(node: Object, opts?: Object): boolean;
declare function isVar(node: Object, opts?: Object): boolean;
declare function isUser(node: Object, opts?: Object): boolean;
declare function isGenerated(node: Object, opts?: Object): boolean;
declare function isPure(node: Object, opts?: Object): boolean;
}