Skip to content

Commit caec556

Browse files
sheetalkamatjohnnyreilly
authored andcommitted
Do not create program multiple times when there are no changes in files (#747)
TypeScript cant tell if there is invalidation because of custom module resolution, that means it needs to create new program whenver asked for Fixes #746
1 parent 0936566 commit caec556

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ function updateFileInCache(
255255
}
256256

257257
if (instance.watchHost && fileWatcherEventKind !== undefined) {
258+
instance.hasUnaccountedModifiedFiles = true;
258259
instance.watchHost.invokeFileWatcher(filePath, fileWatcherEventKind);
259260
instance.watchHost.invokeDirectoryWatcher(path.dirname(filePath), filePath);
260261
}

src/instances.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ const instances = <TSInstances>{};
2525

2626
function ensureProgram(instance: TSInstance) {
2727
if (instance && instance.watchHost) {
28-
if (instance.changedFilesList) {
29-
instance.watchHost.updateRootFileNames();
30-
}
31-
if (instance.watchOfFilesAndCompilerOptions) {
32-
instance.program = instance.watchOfFilesAndCompilerOptions
33-
.getProgram()
34-
.getProgram();
28+
if (instance.hasUnaccountedModifiedFiles) {
29+
if (instance.changedFilesList) {
30+
instance.watchHost.updateRootFileNames();
31+
}
32+
if (instance.watchOfFilesAndCompilerOptions) {
33+
instance.program = instance.watchOfFilesAndCompilerOptions
34+
.getProgram()
35+
.getProgram();
36+
}
37+
instance.hasUnaccountedModifiedFiles = false;
3538
}
3639
return instance.program;
3740
}

src/interfaces.ts

+1
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ export interface TSInstance {
256256
typescript.BuilderProgram
257257
>;
258258
program?: typescript.Program;
259+
hasUnaccountedModifiedFiles?: boolean;
259260
changedFilesList?: boolean;
260261
}
261262

0 commit comments

Comments
 (0)