diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index af2a091ed1d7..5b3e03d694b0 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -400,14 +400,17 @@ export default (superClass: Class): Class => finishCallExpression( node: T, optional: boolean, - ): T & { source?: N.Node } { - const finishedNode = super.finishCallExpression(node, optional); - + ): T | N.EstreeImportExpression { if (node.callee.type === "Import") { + const finishedNode: N.EstreeImportExpression = (super.finishCallExpression( + node, + optional, + ): any); finishedNode.type = "ImportExpression"; finishedNode.source = node.arguments[0]; + return finishedNode; } - return finishedNode; + return super.finishCallExpression(node, optional); } }; diff --git a/packages/babel-parser/src/types.js b/packages/babel-parser/src/types.js index 82815b1443d6..af38806426a2 100644 --- a/packages/babel-parser/src/types.js +++ b/packages/babel-parser/src/types.js @@ -1012,7 +1012,7 @@ export type FlowInterfaceType = NodeBase & { body: FlowObjectTypeAnnotation, }; -// estree +// ESTree export type EstreeProperty = NodeBase & { type: "Property", @@ -1038,6 +1038,13 @@ export type EstreeMethodDefinition = NodeBase & { variance?: ?FlowVariance, }; +export type EstreeImportExpression = NodeBase & { + type: "ImportExpression", + callee: Import, + arguments: Array, + source: Expression, +}; + // === === === === // TypeScript // === === === ===