🤖 Pick PR #63239 (Fix missing lib files in reused pro...) into release-6.0 (#63246)

Co-authored-by: Jake Bailey <5341706+jakebailey@users.noreply.github.com>
This commit is contained in:
TypeScript Bot
2026-03-13 14:48:14 -07:00
committed by GitHub
parent 35ff23d4b0
commit 9e72ab71b5
32 changed files with 40 additions and 49 deletions

View File

@@ -123444,6 +123444,9 @@ function createProgram(_rootNamesOrOptions, _options, _host, _oldProgram, _confi
Debug.assert(newSourceFiles.length === oldProgram.getSourceFiles().length);
for (const newSourceFile of newSourceFiles) {
filesByName.set(newSourceFile.path, newSourceFile);
if (oldProgram.isSourceFileDefaultLibrary(newSourceFile)) {
libFiles.add(newSourceFile.path);
}
}
const oldFilesByNameMap = oldProgram.getFilesByNameMap();
oldFilesByNameMap.forEach((oldFile, path) => {

View File

@@ -128318,6 +128318,9 @@ function createProgram(_rootNamesOrOptions, _options, _host, _oldProgram, _confi
Debug.assert(newSourceFiles.length === oldProgram.getSourceFiles().length);
for (const newSourceFile of newSourceFiles) {
filesByName.set(newSourceFile.path, newSourceFile);
if (oldProgram.isSourceFileDefaultLibrary(newSourceFile)) {
libFiles.add(newSourceFile.path);
}
}
const oldFilesByNameMap = oldProgram.getFilesByNameMap();
oldFilesByNameMap.forEach((oldFile, path) => {

View File

@@ -2555,6 +2555,9 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
Debug.assert(newSourceFiles.length === oldProgram.getSourceFiles().length);
for (const newSourceFile of newSourceFiles) {
filesByName.set(newSourceFile.path, newSourceFile);
if (oldProgram.isSourceFileDefaultLibrary(newSourceFile)) {
libFiles.add(newSourceFile.path);
}
}
const oldFilesByNameMap = oldProgram.getFilesByNameMap();
oldFilesByNameMap.forEach((oldFile, path) => {

View File

@@ -769,6 +769,35 @@ describe("unittests:: reuseProgramStructure:: General", () => {
baselineDiagnostics(baselines, program4);
runBaseline("handles file preprocessing dignostics when diagnostics are not queried", baselines);
});
it("isSourceFileDefaultLibrary is preserved after program reuse", () => {
const libFile = { name: "/lib.d.ts", text: SourceText.New("", "", "declare var console: any;") };
const mainFile = { name: "/main.ts", text: SourceText.New("", "", "var x = 1;") };
const files = [libFile, mainFile];
const host = createTestCompilerHost(files, target);
host.getDefaultLibFileName = () => "/lib.d.ts";
const options: ts.CompilerOptions = { target };
const program1 = ts.createProgram(["/main.ts"], options, host) as ProgramWithSourceTexts;
program1.sourceTexts = files;
program1.host = host;
program1.version = 1;
const libSourceFile1 = program1.getSourceFile("/lib.d.ts")!;
assert.isDefined(libSourceFile1, "lib file should exist in program 1");
assert.isTrue(program1.isSourceFileDefaultLibrary(libSourceFile1), "lib file should be a default library in program 1");
// Update main file only (code change) -> should trigger complete structure reuse
mainFile.text = mainFile.text.updateProgram("var x = 2;");
const host2 = createTestCompilerHost(files, target, program1);
host2.getDefaultLibFileName = () => "/lib.d.ts";
const program2 = ts.createProgram(["/main.ts"], options, host2, program1);
const libSourceFile2 = program2.getSourceFile("/lib.d.ts")!;
assert.isDefined(libSourceFile2, "lib file should exist in program 2");
assert.isTrue(program2.isSourceFileDefaultLibrary(libSourceFile2), "lib file should still be a default library in program 2 after reuse");
});
});
describe("unittests:: reuseProgramStructure:: host is optional", () => {

View File

@@ -126,6 +126,5 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/username/projects/project/app/file.ts (computed .d.ts)
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -115,6 +115,5 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/a/app.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -115,6 +115,5 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/a/app.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -189,7 +189,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/a/b/globalfile3.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/b/modulefile1.ts (computed .d.ts)
/home/src/projects/a/b/file1consumer1.ts (computed .d.ts)
/home/src/projects/a/b/file1consumer2.ts (computed .d.ts)

View File

@@ -142,7 +142,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/a/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/b.ts (computed .d.ts)
exitCode:: ExitStatus.undefined
@@ -200,7 +199,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/a/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/b.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -150,7 +150,6 @@ No cached semantic diagnostics in the builder::
Shape signatures in builder refreshed for::
/home/src/projects/a/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/b.ts (computed .d.ts)
exitCode:: ExitStatus.undefined
@@ -211,7 +210,6 @@ No cached semantic diagnostics in the builder::
Shape signatures in builder refreshed for::
/home/src/projects/a/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/b.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -169,7 +169,6 @@ No cached semantic diagnostics in the builder::
Shape signatures in builder refreshed for::
/home/src/projects/a/rootfolder/project/scripts/typescript.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/home/src/projects/a/rootfolder/project/scripts/javascript.js (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -258,7 +258,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -547,7 +546,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -210,7 +210,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -448,7 +447,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -116,7 +116,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -262,7 +261,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -129,7 +129,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -295,7 +294,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -229,7 +229,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -486,7 +485,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -121,7 +121,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -272,7 +271,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/home/src/projects/project/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -153,7 +153,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/workspace/solution/projects/project/commonfile2.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/user/username/workspace/solution/projects/project/commonfile1.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -152,7 +152,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/workspace/solution/projects/project/commonfile2.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/user/username/workspace/solution/projects/project/commonfile1.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -117,7 +117,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -170,6 +169,5 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -114,12 +114,10 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -168,11 +166,9 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -114,12 +114,10 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -168,11 +166,9 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -117,7 +117,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -171,6 +170,5 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -114,12 +114,10 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -169,11 +167,9 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -114,12 +114,10 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined
@@ -169,11 +167,9 @@ Program files::
/user/username/projects/myproject/a.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
/user/username/projects/myproject/a.ts
Shape signatures in builder refreshed for::
/user/username/projects/myproject/a.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -243,6 +243,7 @@ Program files::
/user/username/projects/myproject/b.d.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
No shapes updated in the builder::
@@ -297,6 +298,7 @@ Program files::
/user/username/projects/myproject/b.d.ts
Semantic diagnostics in builder refreshed for::
/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts
No shapes updated in the builder::

View File

@@ -126,7 +126,6 @@ main.ts
Shape signatures in builder refreshed for::
/user/username/projects/project/main.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -708,7 +708,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/a/username/projects/project/typescript.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
exitCode:: ExitStatus.undefined

View File

@@ -194,7 +194,6 @@ Semantic diagnostics in builder refreshed for::
Shape signatures in builder refreshed for::
/user/username/projects/project/commonfile1.ts (computed .d.ts)
/home/src/tslibs/ts/lib/lib.es2025.full.d.ts (used version)
/user/username/projects/project/commonfile2.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

View File

@@ -345,7 +345,6 @@ Info seq [hh:mm:ss:mss] response:
"projectFileName": "/home/src/workspace/projects/b/tsconfig.json",
"fileNames": [
"/home/src/workspace/projects/b/globalFile3.ts",
"/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts",
"/home/src/workspace/projects/b/moduleFile1.ts",
"/home/src/workspace/projects/b/file1Consumer1.ts",
"/home/src/workspace/projects/b/file1Consumer2.ts",

View File

@@ -697,7 +697,6 @@ Info seq [hh:mm:ss:mss] response:
"projectFileName": "/user/username/projects/myproject/tsconfig.json",
"fileNames": [
"/user/username/projects/myproject/file2.ts",
"/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts",
"/user/username/projects/myproject/file1.ts",
"/user/username/projects/myproject/file3.ts",
"/user/username/projects/myproject/module.ts"

View File

@@ -659,7 +659,6 @@ Info seq [hh:mm:ss:mss] response:
"projectFileName": "/user/username/projects/myproject/tsconfig.json",
"fileNames": [
"/user/username/projects/myproject/file2.ts",
"/home/src/tslibs/TS/Lib/lib.es2025.full.d.ts",
"/user/username/projects/myproject/file1.ts",
"/user/username/projects/myproject/file3.ts"
],