Skip to content

Commit 9872184

Browse files
authored
Remove dependence on module compiler option to consider mts/cts files always modules (#49815)
1 parent eb430f2 commit 9872184

5 files changed

+48
-5
lines changed

src/compiler/utilities.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6319,7 +6319,7 @@ namespace ts {
63196319
// Excludes declaration files - they still require an explicit `export {}` or the like
63206320
// for back compat purposes. The only non-declaration files _not_ forced to be a module are `.js` files
63216321
// that aren't esm-mode (meaning not in a `type: module` scope).
6322-
return (file.impliedNodeFormat === ModuleKind.ESNext || (fileExtensionIsOneOf(file.fileName, [Extension.Cjs, Extension.Cts]))) && !file.isDeclarationFile ? true : undefined;
6322+
return (file.impliedNodeFormat === ModuleKind.ESNext || (fileExtensionIsOneOf(file.fileName, [Extension.Cjs, Extension.Cts, Extension.Mjs, Extension.Mts]))) && !file.isDeclarationFile ? true : undefined;
63236323
}
63246324

63256325
export function getSetExternalModuleIndicator(options: CompilerOptions): (file: SourceFile) => void {
@@ -6343,10 +6343,7 @@ namespace ts {
63436343
if (options.jsx === JsxEmit.ReactJSX || options.jsx === JsxEmit.ReactJSXDev) {
63446344
checks.push(isFileModuleFromUsingJSXTag);
63456345
}
6346-
const moduleKind = getEmitModuleKind(options);
6347-
if (moduleKind === ModuleKind.Node16 || moduleKind === ModuleKind.NodeNext) {
6348-
checks.push(isFileForcedToBeModuleByFormat);
6349-
}
6346+
checks.push(isFileForcedToBeModuleByFormat);
63506347
const combined = or(...checks);
63516348
const callback = (file: SourceFile) => void (file.externalModuleIndicator = combined(file));
63526349
return callback;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//// [tests/cases/compiler/moduleDetectionIsolatedModulesCjsFileScope.ts] ////
2+
3+
//// [filename.cts]
4+
const a = 2;
5+
//// [filename.mts]
6+
const a = 2;
7+
8+
//// [filename.cjs]
9+
const a = 2;
10+
export {};
11+
//// [filename.mjs]
12+
const a = 2;
13+
export {};
14+
15+
16+
//// [filename.d.cts]
17+
export {};
18+
//// [filename.d.mts]
19+
export {};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
=== tests/cases/compiler/filename.cts ===
2+
const a = 2;
3+
>a : Symbol(a, Decl(filename.cts, 0, 5))
4+
5+
=== tests/cases/compiler/filename.mts ===
6+
const a = 2;
7+
>a : Symbol(a, Decl(filename.mts, 0, 5))
8+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
=== tests/cases/compiler/filename.cts ===
2+
const a = 2;
3+
>a : 2
4+
>2 : 2
5+
6+
=== tests/cases/compiler/filename.mts ===
7+
const a = 2;
8+
>a : 2
9+
>2 : 2
10+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// @target: esnext
2+
// @module: esnext
3+
// @declaration: true
4+
// @moduleResolution: node
5+
// @isolatedModules: true
6+
// @filename: filename.cts
7+
const a = 2;
8+
// @filename: filename.mts
9+
const a = 2;

0 commit comments

Comments
 (0)