From e4467b53f25c8e97b43d41561772fa09f5c614fb Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Sun, 25 Sep 2022 18:25:02 +0300 Subject: [PATCH 1/2] feat(48702): preserve import() for target >= ES2020 and module None --- src/compiler/transformers/module/module.ts | 3 +++ .../moduleNoneDynamicImport(target=es2015).js | 11 +++++++++++ .../moduleNoneDynamicImport(target=es2015).symbols | 9 +++++++++ .../moduleNoneDynamicImport(target=es2015).types | 10 ++++++++++ .../moduleNoneDynamicImport(target=es2020).js | 11 +++++++++++ .../moduleNoneDynamicImport(target=es2020).symbols | 9 +++++++++ .../moduleNoneDynamicImport(target=es2020).types | 10 ++++++++++ tests/baselines/reference/moduleNoneDynamicImport.js | 11 +++++++++++ .../reference/moduleNoneDynamicImport.symbols | 9 +++++++++ .../baselines/reference/moduleNoneDynamicImport.types | 10 ++++++++++ tests/cases/compiler/moduleNoneDynamicImport.ts | 9 +++++++++ 11 files changed, 102 insertions(+) create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2015).js create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2015).symbols create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2020).js create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2020).symbols create mode 100644 tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types create mode 100644 tests/baselines/reference/moduleNoneDynamicImport.js create mode 100644 tests/baselines/reference/moduleNoneDynamicImport.symbols create mode 100644 tests/baselines/reference/moduleNoneDynamicImport.types create mode 100644 tests/cases/compiler/moduleNoneDynamicImport.ts diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 9b3b8e6ee1283..ed02fb86881de 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -709,6 +709,9 @@ namespace ts { } 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..c7956d1ffb39e --- /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; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types b/tests/baselines/reference/moduleNoneDynamicImport(target=es2015).types new file mode 100644 index 0000000000000..276872b676b4a --- /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; +No type information for this code. +No type information for this code. \ No newline at end of file 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..c7956d1ffb39e --- /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; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types b/tests/baselines/reference/moduleNoneDynamicImport(target=es2020).types new file mode 100644 index 0000000000000..276872b676b4a --- /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; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleNoneDynamicImport.js b/tests/baselines/reference/moduleNoneDynamicImport.js new file mode 100644 index 0000000000000..6d9ececb40496 --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport.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.symbols b/tests/baselines/reference/moduleNoneDynamicImport.symbols new file mode 100644 index 0000000000000..54815d6bfbbf2 --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport.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; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleNoneDynamicImport.types b/tests/baselines/reference/moduleNoneDynamicImport.types new file mode 100644 index 0000000000000..91907db9e7d09 --- /dev/null +++ b/tests/baselines/reference/moduleNoneDynamicImport.types @@ -0,0 +1,10 @@ +=== /a.ts === +const foo = import("/b"); +>foo : Promise +>import("/b") : Promise +>"/b" : "/b" + +=== /b.js === +export default 1; +No type information for this code. +No type information for this code. \ No newline at end of file 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; From 0f94b12ea287563730ca5776b6fbe705123e3fa0 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Wed, 28 Sep 2022 09:24:57 +0300 Subject: [PATCH 2/2] update baseline --- tests/baselines/reference/moduleNoneDynamicImport.js | 11 ----------- .../reference/moduleNoneDynamicImport.symbols | 9 --------- .../baselines/reference/moduleNoneDynamicImport.types | 10 ---------- 3 files changed, 30 deletions(-) delete mode 100644 tests/baselines/reference/moduleNoneDynamicImport.js delete mode 100644 tests/baselines/reference/moduleNoneDynamicImport.symbols delete mode 100644 tests/baselines/reference/moduleNoneDynamicImport.types diff --git a/tests/baselines/reference/moduleNoneDynamicImport.js b/tests/baselines/reference/moduleNoneDynamicImport.js deleted file mode 100644 index 6d9ececb40496..0000000000000 --- a/tests/baselines/reference/moduleNoneDynamicImport.js +++ /dev/null @@ -1,11 +0,0 @@ -//// [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.symbols b/tests/baselines/reference/moduleNoneDynamicImport.symbols deleted file mode 100644 index 54815d6bfbbf2..0000000000000 --- a/tests/baselines/reference/moduleNoneDynamicImport.symbols +++ /dev/null @@ -1,9 +0,0 @@ -=== /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; -No type information for this code. -No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleNoneDynamicImport.types b/tests/baselines/reference/moduleNoneDynamicImport.types deleted file mode 100644 index 91907db9e7d09..0000000000000 --- a/tests/baselines/reference/moduleNoneDynamicImport.types +++ /dev/null @@ -1,10 +0,0 @@ -=== /a.ts === -const foo = import("/b"); ->foo : Promise ->import("/b") : Promise ->"/b" : "/b" - -=== /b.js === -export default 1; -No type information for this code. -No type information for this code. \ No newline at end of file