Skip to content

Commit

Permalink
Move logic into estree plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
kaicataldo committed Dec 6, 2019
1 parent e51ed79 commit e8fbad0
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
11 changes: 4 additions & 7 deletions packages/babel-parser/src/parser/expression.js
Expand Up @@ -785,7 +785,6 @@ export default class ExpressionParser extends LValParser {
node: T,
optional: boolean,
): T {
let nodeType = optional ? "OptionalCallExpression" : "CallExpression";
if (node.callee.type === "Import") {
if (node.arguments.length !== 1) {
this.raise(node.start, "import() requires exactly one argument");
Expand All @@ -795,13 +794,11 @@ export default class ExpressionParser extends LValParser {
this.raise(importArg.start, "... is not allowed in import()");
}
}

if (this.hasPlugin("estree")) {
nodeType = "ImportExpression";
node.source = node.arguments[0];
}
}
return this.finishNode(node, nodeType);
return this.finishNode(
node,
optional ? "OptionalCallExpression" : "CallExpression",
);
}

parseCallExpressionArguments(
Expand Down
15 changes: 15 additions & 0 deletions packages/babel-parser/src/plugins/estree.js
Expand Up @@ -396,4 +396,19 @@ export default (superClass: Class<Parser>): Class<Parser> =>
super.toAssignableObjectExpressionProp(prop, isBinding, isLast);
}
}

finishCallExpression<T: N.CallExpression | N.OptionalCallExpression>(
node: T,
optional: boolean,
): T & { source?: N.Node } {
const finishedNode = super.finishCallExpression(node, optional);

if (node.callee.type === "Import") {
finishedNode.type = "ImportExpression";
finishedNode.source = node.arguments[0];
}
console.log(finishedNode);

return finishedNode;
}
};

0 comments on commit e8fbad0

Please sign in to comment.