Skip to content

Commit 73c5a6b

Browse files
committed
Lock lib replacement behind option
1 parent dd90bc2 commit 73c5a6b

File tree

6 files changed

+26
-8
lines changed

6 files changed

+26
-8
lines changed

src/compiler/program.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4065,6 +4065,17 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
40654065
const existing = resolvedLibProcessing?.get(libFileName);
40664066
if (existing) return existing;
40674067

4068+
if (!options.libReplacement) {
4069+
const result: LibResolution = {
4070+
resolution: {
4071+
resolvedModule: undefined,
4072+
},
4073+
actual: combinePaths(defaultLibraryPath, libFileName),
4074+
};
4075+
(resolvedLibProcessing ??= new Map()).set(libFileName, result);
4076+
return result;
4077+
}
4078+
40684079
if (structureIsReused !== StructureIsReused.Not && oldProgram && !hasInvalidatedLibResolutions(libFileName)) {
40694080
const oldResolution = oldProgram.resolvedLibReferences?.get(libFileName);
40704081
if (oldResolution) {

src/testRunner/unittests/helpers/libraryResolution.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,23 @@ function getSysForLibResolution(libRedirection?: boolean, forTsserver?: boolean)
2121
/// <reference lib="es5"/>
2222
`,
2323
"/home/src/workspace/projects/project1/tsconfig.json": jsonToReadableText({
24-
compilerOptions: { composite: true, typeRoots: ["./typeroot1"], lib: ["es5", "dom"], traceResolution: true },
24+
compilerOptions: { composite: true, typeRoots: ["./typeroot1"], lib: ["es5", "dom"], traceResolution: true, libReplacement: libRedirection },
2525
}),
2626
"/home/src/workspace/projects/project1/typeroot1/sometype/index.d.ts": `export type TheNum = "type1";`,
2727
"/home/src/workspace/projects/project2/utils.d.ts": `export const y = 10;`,
2828
"/home/src/workspace/projects/project2/index.ts": `export const y = 10`,
2929
"/home/src/workspace/projects/project2/tsconfig.json": jsonToReadableText({
30-
compilerOptions: { composite: true, lib: ["es5", "dom"], traceResolution: true },
30+
compilerOptions: { composite: true, lib: ["es5", "dom"], traceResolution: true, libReplacement: libRedirection },
3131
}),
3232
"/home/src/workspace/projects/project3/utils.d.ts": `export const y = 10;`,
3333
"/home/src/workspace/projects/project3/index.ts": `export const z = 10`,
3434
"/home/src/workspace/projects/project3/tsconfig.json": jsonToReadableText({
35-
compilerOptions: { composite: true, lib: ["es5", "dom"], traceResolution: true },
35+
compilerOptions: { composite: true, lib: ["es5", "dom"], traceResolution: true, libReplacement: libRedirection },
3636
}),
3737
"/home/src/workspace/projects/project4/utils.d.ts": `export const y = 10;`,
3838
"/home/src/workspace/projects/project4/index.ts": `export const z = 10`,
3939
"/home/src/workspace/projects/project4/tsconfig.json": jsonToReadableText({
40-
compilerOptions: { composite: true, lib: ["esnext", "dom", "webworker"], traceResolution: true },
40+
compilerOptions: { composite: true, lib: ["esnext", "dom", "webworker"], traceResolution: true, libReplacement: libRedirection },
4141
}),
4242
[getTypeScriptLibTestLocation("dom")]: "interface DOMInterface { }",
4343
[getTypeScriptLibTestLocation("webworker")]: "interface WebWorkerInterface { }",
@@ -71,6 +71,7 @@ function getLibResolutionEditOptions(
7171
typeRoots: ["./typeroot1", "./typeroot2"],
7272
lib: ["es5", "dom"],
7373
traceResolution: true,
74+
libReplacement: true,
7475
},
7576
}),
7677
),
@@ -90,6 +91,7 @@ function getLibResolutionEditOptions(
9091
typeRoots: ["./typeroot1"],
9192
lib: ["es5", "dom"],
9293
traceResolution: true,
94+
libReplacement: true,
9395
},
9496
}),
9597
);
@@ -235,6 +237,7 @@ export function getSysForLibResolutionUnknown(): TestServerHost {
235237
compilerOptions: {
236238
composite: true,
237239
traceResolution: true,
240+
libReplacement: true,
238241
},
239242
}),
240243
[getTypeScriptLibTestLocation("webworker")]: "interface WebWorkerInterface { }",

tests/cases/compiler/libTypeScriptOverrideSimple.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// @traceResolution: true
2+
// @libReplacement: true
23

34
// @Filename: /node_modules/@typescript/lib-dom/index.d.ts
45
interface ABC { abc: string }
@@ -8,4 +9,4 @@ const a: ABC = { abc: "Hello" }
89

910
// This should fail because libdom has been replaced
1011
// by the module above ^
11-
window.localStorage
12+
window.localStorage

tests/cases/compiler/libTypeScriptOverrideSimpleConfig.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// @traceResolution: true
2+
// @libReplacement: true
23

34
// @Filename: /somepath/node_modules/@typescript/lib-dom/index.d.ts
45
interface ABC { abc: string }
@@ -10,4 +11,4 @@ const a: ABC = { abc: "Hello" }
1011

1112
// This should fail because libdom has been replaced
1213
// by the module above ^
13-
window.localStorage
14+
window.localStorage

tests/cases/compiler/libTypeScriptSubfileResolving.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// @traceResolution: true
2+
// @libReplacement: true
23

34
// @Filename: /node_modules/@typescript/lib-dom/index.d.ts
45
// NOOP
@@ -10,4 +11,4 @@ const a: DOMIterable = { abc: "Hello" }
1011

1112
// This should fail because libdom has been replaced
1213
// by the module above ^
13-
window.localStorage
14+
window.localStorage

tests/cases/compiler/libTypeScriptSubfileResolvingConfig.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// @traceResolution: true
2+
// @libReplacement: true
23

34
// @Filename: /somepath/node_modules/@typescript/lib-dom/index.d.ts
45
// NOOP
@@ -12,4 +13,4 @@ const a: DOMIterable = { abc: "Hello" }
1213

1314
// This should fail because libdom has been replaced
1415
// by the module above ^
15-
window.localStorage
16+
window.localStorage

0 commit comments

Comments
 (0)