Skip to content

Commit 848e5db

Browse files
committed
defer creation of fullTypeCheckChecker
1 parent 8475a33 commit 848e5db

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/services/services.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,8 @@ module ts {
12591259
// this checker is used to answer all LS questions except errors
12601260
var typeInfoResolver: TypeChecker;
12611261
// the sole purpose of this checkes is to reutrn semantic diagnostics
1262-
var fullTypeCheckChecker: TypeChecker;
1262+
// creation is deferred - use getFullTypeCheckChecker to get instance
1263+
var fullTypeCheckChecker_doNotAccessDirectly: TypeChecker;
12631264
var useCaseSensitivefilenames = false;
12641265
var sourceFilesByName: Map<SourceFile> = {};
12651266
var documentRegistry = documentRegistry;
@@ -1275,6 +1276,10 @@ module ts {
12751276
return lookUp(sourceFilesByName, filename);
12761277
}
12771278

1279+
function getFullTypeCheckChecker() {
1280+
return fullTypeCheckChecker_doNotAccessDirectly || (fullTypeCheckChecker_doNotAccessDirectly = program.getTypeChecker(/*fullTypeCheck*/ true));
1281+
}
1282+
12781283
function createCompilerHost(): CompilerHost {
12791284
return {
12801285
getSourceFile: (filename, languageVersion) => {
@@ -1407,7 +1412,7 @@ module ts {
14071412
// Now create a new compiler
14081413
program = createProgram(hostfilenames, compilationSettings, createCompilerHost());
14091414
typeInfoResolver = program.getTypeChecker(/*fullTypeCheckMode*/ false);
1410-
fullTypeCheckChecker = program.getTypeChecker(/*fullTypeCheckMode*/ true);
1415+
fullTypeCheckChecker_doNotAccessDirectly = undefined;
14111416
}
14121417

14131418
/// Clean up any semantic caches that are not needed.
@@ -1416,7 +1421,7 @@ module ts {
14161421
function cleanupSemanticCache(): void {
14171422
if (program) {
14181423
typeInfoResolver = program.getTypeChecker(/*fullTypeCheckMode*/ false);
1419-
fullTypeCheckChecker = program.getTypeChecker(/*fullTypeCheckMode*/ true);
1424+
fullTypeCheckChecker_doNotAccessDirectly = undefined;
14201425
}
14211426
}
14221427

@@ -1441,7 +1446,7 @@ module ts {
14411446

14421447
filename = TypeScript.switchToForwardSlashes(filename)
14431448

1444-
return fullTypeCheckChecker.getDiagnostics(getSourceFile(filename));
1449+
return getFullTypeCheckChecker().getDiagnostics(getSourceFile(filename));
14451450
}
14461451

14471452
function getCompilerOptionsDiagnostics() {

0 commit comments

Comments
 (0)