diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index e5ade93e74fe9..f45809ae4be63 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -736,6 +736,9 @@ export function transformModule(context: TransformationContext): (x: SourceFile } function visitImportCallExpression(node: ImportCall): Expression { + if (moduleKind === ModuleKind.None && languageVersion >= ScriptTarget.ES2020) { + return visitEachChild(node, visitor, context); + } const externalModuleName = getExternalModuleNameLiteral(factory, node, currentSourceFile, host, resolver, compilerOptions); const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); // Only use the external module name if it differs from the first argument. This allows us to preserve the quote style of the argument on output. diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).js b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).js new file mode 100644 index 0000000000000..e112ffae2889c --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).js @@ -0,0 +1,11 @@ +//// [tests/cases/compiler/moduleNoneDynamicImport.ts] //// + +//// [a.ts] +const foo = import("./b"); + +//// [b.js] +export default 1; + + +//// [a.js] +const foo = Promise.resolve().then(() => require("b")); diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).symbols b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).symbols new file mode 100644 index 0000000000000..73567b5d75b00 --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).symbols @@ -0,0 +1,9 @@ +=== /a.ts === +const foo = import("./b"); +>foo : Symbol(foo, Decl(a.ts, 0, 5)) +>"./b" : Symbol("/b", Decl(b.js, 0, 0)) + +=== /b.js === + +export default 1; + diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types new file mode 100644 index 0000000000000..c6ff188f8cb1a --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types @@ -0,0 +1,10 @@ +=== /a.ts === +const foo = import("./b"); +>foo : Promise +>import("./b") : Promise +>"./b" : "./b" + +=== /b.js === + +export default 1; + diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).js b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).js new file mode 100644 index 0000000000000..af2a4e0bf4f6f --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).js @@ -0,0 +1,11 @@ +//// [tests/cases/compiler/moduleNoneDynamicImport.ts] //// + +//// [a.ts] +const foo = import("./b"); + +//// [b.js] +export default 1; + + +//// [a.js] +const foo = import("./b"); diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).symbols b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).symbols new file mode 100644 index 0000000000000..73567b5d75b00 --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).symbols @@ -0,0 +1,9 @@ +=== /a.ts === +const foo = import("./b"); +>foo : Symbol(foo, Decl(a.ts, 0, 5)) +>"./b" : Symbol("/b", Decl(b.js, 0, 0)) + +=== /b.js === + +export default 1; + diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types new file mode 100644 index 0000000000000..c6ff188f8cb1a --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types @@ -0,0 +1,10 @@ +=== /a.ts === +const foo = import("./b"); +>foo : Promise +>import("./b") : Promise +>"./b" : "./b" + +=== /b.js === + +export default 1; + diff --git a/tests/cases/compiler/moduleNoneDynamicImport.ts b/tests/cases/compiler/moduleNoneDynamicImport.ts new file mode 100644 index 0000000000000..a7309ba5faa8a --- /dev/null +++ b/tests/cases/compiler/moduleNoneDynamicImport.ts @@ -0,0 +1,9 @@ +// @allowJs: true +// @target: es2015,es2020 +// @module: none +// @outFile: /a.js +// @filename: /a.ts +const foo = import("./b"); + +// @filename: /b.js +export default 1;