Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/compiler/factory/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -700,9 +700,10 @@ export function createExternalHelpersImportDeclarationIfNeeded(nodeFactory: Node
const impliedModuleKind = getImpliedNodeFormatForEmitWorker(sourceFile, compilerOptions);
const helpers = getImportedHelpers(sourceFile);
if (
(moduleKind >= ModuleKind.ES2015 && moduleKind <= ModuleKind.ESNext) ||
impliedModuleKind === ModuleKind.ESNext ||
impliedModuleKind === undefined && moduleKind === ModuleKind.Preserve
impliedModuleKind !== ModuleKind.CommonJS &&
((moduleKind >= ModuleKind.ES2015 && moduleKind <= ModuleKind.ESNext) ||
impliedModuleKind === ModuleKind.ESNext ||
impliedModuleKind === undefined && moduleKind === ModuleKind.Preserve)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was able to simplify this condition in Corsa since we’re removing System, AMD, and UMD. Opting to make the minimal change here rather than try to clean up.

) {
// When we emit as an ES module, generate an `import` declaration that uses named imports for helpers.
// If we cannot determine the implied module kind under `module: preserve` we assume ESM.
Expand Down
9 changes: 9 additions & 0 deletions tests/baselines/reference/ctsFileInEsnextHelpers.errors.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
notmodule.cts(1,23): error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found.


==== notmodule.cts (1 errors) ====
export async function foo() {
~~~
!!! error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found.
await 0;
}
24 changes: 24 additions & 0 deletions tests/baselines/reference/ctsFileInEsnextHelpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//// [tests/cases/compiler/ctsFileInEsnextHelpers.ts] ////

//// [notmodule.cts]
export async function foo() {
await 0;
}

//// [notmodule.cjs]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.foo = foo;
var tslib_1 = require("tslib");
function foo() {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
Comment on lines +14 to +15
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before the change, emit was missing the tslib_1. on these

switch (_a.label) {
case 0: return [4 /*yield*/, 0];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
}
8 changes: 8 additions & 0 deletions tests/baselines/reference/ctsFileInEsnextHelpers.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//// [tests/cases/compiler/ctsFileInEsnextHelpers.ts] ////

=== notmodule.cts ===
export async function foo() {
>foo : Symbol(foo, Decl(notmodule.cts, 0, 0))

await 0;
}
13 changes: 13 additions & 0 deletions tests/baselines/reference/ctsFileInEsnextHelpers.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//// [tests/cases/compiler/ctsFileInEsnextHelpers.ts] ////

=== notmodule.cts ===
export async function foo() {
>foo : () => Promise<void>
> : ^^^^^^^^^^^^^^^^^^^

await 0;
>await 0 : 0
> : ^
>0 : 0
> : ^
}
8 changes: 8 additions & 0 deletions tests/cases/compiler/ctsFileInEsnextHelpers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// @module: es2015
// @importHelpers: true
// @noTypesAndSymbols: true

// @Filename: notmodule.cts
export async function foo() {
await 0;
}
Loading