Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
6 changes: 0 additions & 6 deletions tsc/internal/tsoptions/tsconfigparsing.go
Original file line number Diff line number Diff line change
Expand Up @@ -1890,12 +1890,6 @@ func hasFileWithHigherPriorityExtension(file string, extensions [][]string, hasF
return false
}
if hasFile(tspath.ChangeExtension(file, ext)) {
if ext == tspath.ExtensionDts && (tspath.FileExtensionIs(file, tspath.ExtensionJs) || tspath.FileExtensionIs(file, tspath.ExtensionJsx)) {
// LEGACY BEHAVIOR: An off-by-one bug somewhere in the extension priority system for wildcard module loading allowed declaration
// files to be loaded alongside their js(x) counterparts. We regard this as generally undesirable, but retain the behavior to
// prevent breakage.
continue
}
return true
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//// [tests/cases/compiler/checkJsExtensionPriority.ts] ////

=== /a.d.ts ===
export declare const n: number;
>n : Symbol(n, Decl(a.d.ts, 0, 20))

=== /b.d.mts ===
export declare const n: number;
>n : Symbol(n, Decl(b.d.mts, 0, 20))

=== /c.d.cts ===
export declare const n: number;
>n : Symbol(n, Decl(c.d.cts, 0, 20))


Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//// [tests/cases/compiler/checkJsExtensionPriority.ts] ////

=== /a.d.ts ===
export declare const n: number;
>n : number

=== /b.d.mts ===
export declare const n: number;
>n : number

=== /c.d.cts ===
export declare const n: number;
>n : number


Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//// [tests/cases/compiler/checkJsExtensionPriority_includeOrder.ts] ////

=== /a.d.ts ===
export declare const n: number;
>n : Symbol(n, Decl(a.d.ts, 0, 20))

=== /b.d.mts ===
export declare const n: number;
>n : Symbol(n, Decl(b.d.mts, 0, 20))

=== /c.d.cts ===
export declare const n: number;
>n : Symbol(n, Decl(c.d.cts, 0, 20))

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//// [tests/cases/compiler/checkJsExtensionPriority_includeOrder.ts] ////

=== /a.d.ts ===
export declare const n: number;
>n : number

=== /b.d.mts ===
export declare const n: number;
>n : number

=== /c.d.cts ===
export declare const n: number;
>n : number

42 changes: 42 additions & 0 deletions tsc/testdata/tests/cases/compiler/checkJsExtensionPriority.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// @Filename: /tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "nodenext",
"moduleResolution": "nodenext",
"allowJs": true,
"checkJs": true,
"strict": true,
"noEmit": true
}
}

// @Filename: /package.json
{
"type": "module"
}

// @Filename: /a.js
export const n = 1;
const bad = null;
bad.a.b.c();

// @Filename: /a.d.ts
export declare const n: number;

// @Filename: /b.mjs
export const n = 1;
const bad = null;
bad.a.b.c();

// @Filename: /b.d.mts
export declare const n: number;

// @Filename: /c.cjs
export const n = 1;
const bad = null;
bad.a.b.c();

// @Filename: /c.d.cts
export declare const n: number;

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// @Filename: /tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "nodenext",
"moduleResolution": "nodenext",
"allowJs": true,
"checkJs": true,
"strict": true,
"noEmit": true
},
"include": [
"**/*.js",
"**/*.d.ts",
"**/*.mjs",
"**/*.d.mts",
"**/*.cjs",
"**/*.d.cts"
]
}

// @Filename: /package.json
{
"type": "module"
}

// @Filename: /a.js
const bad = null;
bad.a();

// @Filename: /a.d.ts
export declare const n: number;

// @Filename: /b.mjs
const bad = null;
bad.b();

// @Filename: /b.d.mts
export declare const n: number;

// @Filename: /c.cjs
const bad = null;
bad.c();

// @Filename: /c.d.cts
export declare const n: number;