From 0ee317e957e4ec82b3739517825136857a5cc80d Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 11 Mar 2024 17:55:43 -0400 Subject: [PATCH] =?UTF-8?q?Revert=20"Fix=20emit=20for=20`export=20{=20defa?= =?UTF-8?q?ult=20}=20from=20...`=20when=20both=20`importHelpers`=20?= =?UTF-8?q?=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit aa189628927fecbbac7a43ae99da1d4a0a6a75bb. --- src/compiler/transformers/utilities.ts | 12 +++---- ...importHelpersNoEmitHelpersExportDefault.js | 36 ------------------- ...ImportHelpersCollisions3(module=node16).js | 8 +++-- ...portHelpersCollisions3(module=nodenext).js | 8 +++-- ...ImportHelpersCollisions3(module=node16).js | 6 ++-- ...portHelpersCollisions3(module=nodenext).js | 6 ++-- ...importHelpersNoEmitHelpersExportDefault.ts | 21 ----------- 7 files changed, 22 insertions(+), 75 deletions(-) delete mode 100644 tests/baselines/reference/importHelpersNoEmitHelpersExportDefault.js delete mode 100644 tests/cases/compiler/importHelpersNoEmitHelpersExportDefault.ts diff --git a/src/compiler/transformers/utilities.ts b/src/compiler/transformers/utilities.ts index ad86ded1cb6..4cfd7977881 100644 --- a/src/compiler/transformers/utilities.ts +++ b/src/compiler/transformers/utilities.ts @@ -68,7 +68,6 @@ import { map, MethodDeclaration, ModifierFlags, - NamedExportBindings, NamedImportBindings, NamespaceExport, Node, @@ -110,16 +109,14 @@ export interface ExternalModuleInfo { hasExportStarsToExportValues: boolean; // whether this module contains export* } -function containsDefaultReference(node: NamedImportBindings | NamedExportBindings | undefined) { +function containsDefaultReference(node: NamedImportBindings | undefined) { if (!node) return false; - if (!isNamedImports(node) && !isNamedExports(node)) return false; + if (!isNamedImports(node)) return false; return some(node.elements, isNamedDefaultReference); } -function isNamedDefaultReference(e: ImportSpecifier | ExportSpecifier): boolean { - return e.propertyName !== undefined ? - e.propertyName.escapedText === InternalSymbolName.Default : - e.name.escapedText === InternalSymbolName.Default; +function isNamedDefaultReference(e: ImportSpecifier): boolean { + return e.propertyName !== undefined && e.propertyName.escapedText === InternalSymbolName.Default; } /** @internal */ @@ -219,7 +216,6 @@ export function collectExternalModuleInfo(context: TransformationContext, source externalImports.push(node as ExportDeclaration); if (isNamedExports((node as ExportDeclaration).exportClause!)) { addExportedNamesForExportDeclaration(node as ExportDeclaration); - hasImportDefault ||= containsDefaultReference((node as ExportDeclaration).exportClause); } else { const name = ((node as ExportDeclaration).exportClause as NamespaceExport).name; diff --git a/tests/baselines/reference/importHelpersNoEmitHelpersExportDefault.js b/tests/baselines/reference/importHelpersNoEmitHelpersExportDefault.js deleted file mode 100644 index 3212b95cb3a..00000000000 --- a/tests/baselines/reference/importHelpersNoEmitHelpersExportDefault.js +++ /dev/null @@ -1,36 +0,0 @@ -//// [tests/cases/compiler/importHelpersNoEmitHelpersExportDefault.ts] //// - -//// [main.ts] -// https://github.com/microsoft/TypeScript/issues/40328 -export { default as A } from "./other"; - -//// [main2.ts] -export { default } from "./other"; - -//// [other.ts] -export default {}; - -//// [tslib.d.ts] -declare module "tslib" { - function __importDefault(m: any): void; -} - -//// [other.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = {}; -//// [main.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.A = void 0; -var tslib_1 = require("tslib"); -// https://github.com/microsoft/TypeScript/issues/40328 -var other_1 = require("./other"); -Object.defineProperty(exports, "A", { enumerable: true, get: function () { return tslib_1.__importDefault(other_1).default; } }); -//// [main2.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = void 0; -var tslib_1 = require("tslib"); -var other_1 = require("./other"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(other_1).default; } }); diff --git a/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=node16).js b/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=node16).js index 8fefc3d2d6b..8e07883b727 100644 --- a/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=node16).js +++ b/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=node16).js @@ -29,14 +29,16 @@ declare module "tslib" { //// [index.js] "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.baz = exports.foo = exports.default = void 0; -var tslib_1 = require("tslib"); // cjs format file var fs_1 = require("fs"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_1).default; } }); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(fs_1).default; } }); var fs_2 = require("fs"); -Object.defineProperty(exports, "foo", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_2).default; } }); +Object.defineProperty(exports, "foo", { enumerable: true, get: function () { return __importDefault(fs_2).default; } }); var fs_3 = require("fs"); Object.defineProperty(exports, "baz", { enumerable: true, get: function () { return fs_3.bar; } }); //// [index.js] diff --git a/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=nodenext).js b/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=nodenext).js index 8fefc3d2d6b..8e07883b727 100644 --- a/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesAllowJsImportHelpersCollisions3(module=nodenext).js @@ -29,14 +29,16 @@ declare module "tslib" { //// [index.js] "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.baz = exports.foo = exports.default = void 0; -var tslib_1 = require("tslib"); // cjs format file var fs_1 = require("fs"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_1).default; } }); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(fs_1).default; } }); var fs_2 = require("fs"); -Object.defineProperty(exports, "foo", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_2).default; } }); +Object.defineProperty(exports, "foo", { enumerable: true, get: function () { return __importDefault(fs_2).default; } }); var fs_3 = require("fs"); Object.defineProperty(exports, "baz", { enumerable: true, get: function () { return fs_3.bar; } }); //// [index.js] diff --git a/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=node16).js b/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=node16).js index e7fd6f6cab2..5f98164aaaa 100644 --- a/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=node16).js @@ -25,12 +25,14 @@ declare module "tslib" { //// [index.js] "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; -var tslib_1 = require("tslib"); // cjs format file var fs_1 = require("fs"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_1).default; } }); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(fs_1).default; } }); //// [index.js] // esm format file export { default } from "fs"; diff --git a/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=nodenext).js b/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=nodenext).js index e7fd6f6cab2..5f98164aaaa 100644 --- a/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportHelpersCollisions3(module=nodenext).js @@ -25,12 +25,14 @@ declare module "tslib" { //// [index.js] "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; -var tslib_1 = require("tslib"); // cjs format file var fs_1 = require("fs"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(fs_1).default; } }); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(fs_1).default; } }); //// [index.js] // esm format file export { default } from "fs"; diff --git a/tests/cases/compiler/importHelpersNoEmitHelpersExportDefault.ts b/tests/cases/compiler/importHelpersNoEmitHelpersExportDefault.ts deleted file mode 100644 index 86433dfb6be..00000000000 --- a/tests/cases/compiler/importHelpersNoEmitHelpersExportDefault.ts +++ /dev/null @@ -1,21 +0,0 @@ -// @target: es5 -// @module: commonjs -// @importHelpers: true -// @noEmitHelpers: true -// @esModuleInterop: true -// @noTypesAndSymbols: true - -// @filename: main.ts -// https://github.com/microsoft/TypeScript/issues/40328 -export { default as A } from "./other"; - -// @filename: main2.ts -export { default } from "./other"; - -// @filename: other.ts -export default {}; - -// @filename: tslib.d.ts -declare module "tslib" { - function __importDefault(m: any): void; -} \ No newline at end of file