mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Emit dynamic import when module kind is es2018
This commit is contained in:
@@ -671,6 +671,8 @@ namespace ts {
|
||||
return emitCallExpression(<CallExpression>node);
|
||||
case SyntaxKind.NewExpression:
|
||||
return emitNewExpression(<NewExpression>node);
|
||||
case SyntaxKind.ImportCallExpression:
|
||||
return emitImportCallExpression(<ImportCallExpression>node);
|
||||
case SyntaxKind.TaggedTemplateExpression:
|
||||
return emitTaggedTemplateExpression(<TaggedTemplateExpression>node);
|
||||
case SyntaxKind.TypeAssertionExpression:
|
||||
@@ -1153,6 +1155,13 @@ namespace ts {
|
||||
emitExpressionList(node, node.arguments, ListFormat.NewExpressionArguments);
|
||||
}
|
||||
|
||||
function emitImportCallExpression(node: ImportCallExpression) {
|
||||
write("import");
|
||||
write("(");
|
||||
emitExpression(node.specifier);
|
||||
write(")");
|
||||
}
|
||||
|
||||
function emitTaggedTemplateExpression(node: TaggedTemplateExpression) {
|
||||
emitExpression(node.tag);
|
||||
write(" ");
|
||||
|
||||
@@ -503,6 +503,18 @@ namespace ts {
|
||||
: node;
|
||||
}
|
||||
|
||||
export function createImportCall(specifier: Expression): ImportCallExpression {
|
||||
const node = <ImportCallExpression>createSynthesizedNode(SyntaxKind.ImportCallExpression);
|
||||
node.specifier = specifier;
|
||||
return node;
|
||||
}
|
||||
|
||||
export function updateImportCall(node: ImportCallExpression, specifier: Expression): ImportCallExpression {
|
||||
return node.specifier !== specifier
|
||||
? updateNode(createImportCall(specifier), node)
|
||||
: node;
|
||||
}
|
||||
|
||||
export function createTaggedTemplate(tag: Expression, template: TemplateLiteral) {
|
||||
const node = <TaggedTemplateExpression>createSynthesizedNode(SyntaxKind.TaggedTemplateExpression);
|
||||
node.tag = parenthesizeForAccess(tag);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
namespace ts {
|
||||
function getModuleTransformer(moduleKind: ModuleKind): TransformerFactory<SourceFile> {
|
||||
switch (moduleKind) {
|
||||
case ModuleKind.ES2018:
|
||||
case ModuleKind.ES2015:
|
||||
return transformES2015Module;
|
||||
case ModuleKind.System:
|
||||
|
||||
@@ -339,6 +339,10 @@ namespace ts {
|
||||
visitNodes((<CallExpression>node).typeArguments, visitor, isTypeNode),
|
||||
visitNodes((<CallExpression>node).arguments, visitor, isExpression));
|
||||
|
||||
case SyntaxKind.ImportCallExpression:
|
||||
return updateImportCall(<ImportCallExpression>node,
|
||||
visitNode((<ImportCallExpression>node).specifier, visitor, isExpression));
|
||||
|
||||
case SyntaxKind.NewExpression:
|
||||
return updateNew(<NewExpression>node,
|
||||
visitNode((<NewExpression>node).expression, visitor, isExpression),
|
||||
|
||||
Reference in New Issue
Block a user