From bb975aff3ef32cd6ea2f063f2d981e716be612b2 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 16 Nov 2018 15:03:35 -0800 Subject: [PATCH 1/2] getTypeChecker returns the same checker manufactured for diagnostics if it has already been made --- src/compiler/program.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 15c09a1a79ba5..705d9fcb461f2 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1376,7 +1376,7 @@ namespace ts { } function getTypeChecker() { - return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = createTypeChecker(program, /*produceDiagnostics:*/ false)); + return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = diagnosticsProducingTypeChecker || createTypeChecker(program, /*produceDiagnostics:*/ false)); } function emit(sourceFile?: SourceFile, writeFileCallback?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, transformers?: CustomTransformers): EmitResult { From c2cae1d19792c24d7778fa9acbbb6453d317a275 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 16 Nov 2018 16:03:41 -0800 Subject: [PATCH 2/2] Drop (heh) vestigial API --- src/compiler/program.ts | 5 ----- src/compiler/types.ts | 1 - src/harness/harness.ts | 2 +- src/harness/typeWriter.ts | 8 ++------ 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 705d9fcb461f2..c23d09f768e86 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -797,7 +797,6 @@ namespace ts { getResolvedTypeReferenceDirectives: () => resolvedTypeReferenceDirectives, isSourceFileFromExternalLibrary, isSourceFileDefaultLibrary, - dropDiagnosticsProducingTypeChecker, getSourceFileFromReference, getLibFileFromReference, sourceFileToPackageName, @@ -1371,10 +1370,6 @@ namespace ts { return diagnosticsProducingTypeChecker || (diagnosticsProducingTypeChecker = createTypeChecker(program, /*produceDiagnostics:*/ true)); } - function dropDiagnosticsProducingTypeChecker() { - diagnosticsProducingTypeChecker = undefined!; - } - function getTypeChecker() { return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = diagnosticsProducingTypeChecker || createTypeChecker(program, /*produceDiagnostics:*/ false)); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index b4c405c31742a..61d1e5e95901f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2886,7 +2886,6 @@ namespace ts { // For testing purposes only. Should not be used by any other consumers (including the // language service). /* @internal */ getDiagnosticsProducingTypeChecker(): TypeChecker; - /* @internal */ dropDiagnosticsProducingTypeChecker(): void; /* @internal */ getClassifiableNames(): UnderscoreEscapedMap; diff --git a/src/harness/harness.ts b/src/harness/harness.ts index fc275529258bb..60f1eeb02f830 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1507,7 +1507,7 @@ namespace Harness { // These types are equivalent, but depend on what order the compiler observed // certain parts of the program. - const fullWalker = new TypeWriterWalker(program, /*fullTypeCheck*/ true, !!hasErrorBaseline); + const fullWalker = new TypeWriterWalker(program, !!hasErrorBaseline); // Produce baselines. The first gives the types for all expressions. // The second gives symbols for all identifiers. diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 67f79a1a1a3c6..179873fdf1762 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -25,12 +25,8 @@ class TypeWriterWalker { private checker: ts.TypeChecker; - constructor(private program: ts.Program, fullTypeCheck: boolean, private hadErrorBaseline: boolean) { - // Consider getting both the diagnostics checker and the non-diagnostics checker to verify - // they are consistent. - this.checker = fullTypeCheck - ? program.getDiagnosticsProducingTypeChecker() - : program.getTypeChecker(); + constructor(private program: ts.Program, private hadErrorBaseline: boolean) { + this.checker = program.getDiagnosticsProducingTypeChecker(); } public *getSymbols(fileName: string): IterableIterator {