@@ -1025,8 +1025,7 @@ namespace ts {
1025
1025
let files : SourceFile [ ] ;
1026
1026
let symlinks : SymlinkCache | undefined ;
1027
1027
let commonSourceDirectory : string ;
1028
- let diagnosticsProducingTypeChecker : TypeChecker ;
1029
- let noDiagnosticsTypeChecker : TypeChecker ;
1028
+ let typeChecker : TypeChecker ;
1030
1029
let classifiableNames : Set < __String > ;
1031
1030
const ambientModuleNameToUnmodifiedFileName = new Map < string , string > ( ) ;
1032
1031
let fileReasons = createMultiMap < Path , FileIncludeReason > ( ) ;
@@ -1304,21 +1303,19 @@ namespace ts {
1304
1303
getProgramDiagnostics,
1305
1304
getTypeChecker,
1306
1305
getClassifiableNames,
1307
- getDiagnosticsProducingTypeChecker,
1308
1306
getCommonSourceDirectory,
1309
1307
emit,
1310
1308
getCurrentDirectory : ( ) => currentDirectory ,
1311
- getNodeCount : ( ) => getDiagnosticsProducingTypeChecker ( ) . getNodeCount ( ) ,
1312
- getIdentifierCount : ( ) => getDiagnosticsProducingTypeChecker ( ) . getIdentifierCount ( ) ,
1313
- getSymbolCount : ( ) => getDiagnosticsProducingTypeChecker ( ) . getSymbolCount ( ) ,
1314
- getTypeCount : ( ) => getDiagnosticsProducingTypeChecker ( ) . getTypeCount ( ) ,
1315
- getInstantiationCount : ( ) => getDiagnosticsProducingTypeChecker ( ) . getInstantiationCount ( ) ,
1316
- getRelationCacheSizes : ( ) => getDiagnosticsProducingTypeChecker ( ) . getRelationCacheSizes ( ) ,
1309
+ getNodeCount : ( ) => getTypeChecker ( ) . getNodeCount ( ) ,
1310
+ getIdentifierCount : ( ) => getTypeChecker ( ) . getIdentifierCount ( ) ,
1311
+ getSymbolCount : ( ) => getTypeChecker ( ) . getSymbolCount ( ) ,
1312
+ getTypeCount : ( ) => getTypeChecker ( ) . getTypeCount ( ) ,
1313
+ getInstantiationCount : ( ) => getTypeChecker ( ) . getInstantiationCount ( ) ,
1314
+ getRelationCacheSizes : ( ) => getTypeChecker ( ) . getRelationCacheSizes ( ) ,
1317
1315
getFileProcessingDiagnostics : ( ) => fileProcessingDiagnostics ,
1318
1316
getResolvedTypeReferenceDirectives : ( ) => resolvedTypeReferenceDirectives ,
1319
1317
isSourceFileFromExternalLibrary,
1320
1318
isSourceFileDefaultLibrary,
1321
- dropDiagnosticsProducingTypeChecker,
1322
1319
getSourceFileFromReference,
1323
1320
getLibFileFromReference,
1324
1321
sourceFileToPackageName,
@@ -1980,16 +1977,8 @@ namespace ts {
1980
1977
}
1981
1978
}
1982
1979
1983
- function getDiagnosticsProducingTypeChecker ( ) {
1984
- return diagnosticsProducingTypeChecker || ( diagnosticsProducingTypeChecker = createTypeChecker ( program , /*produceDiagnostics:*/ true ) ) ;
1985
- }
1986
-
1987
- function dropDiagnosticsProducingTypeChecker ( ) {
1988
- diagnosticsProducingTypeChecker = undefined ! ;
1989
- }
1990
-
1991
1980
function getTypeChecker ( ) {
1992
- return noDiagnosticsTypeChecker || ( noDiagnosticsTypeChecker = createTypeChecker ( program , /*produceDiagnostics:*/ false ) ) ;
1981
+ return typeChecker || ( typeChecker = createTypeChecker ( program ) ) ;
1993
1982
}
1994
1983
1995
1984
function emit ( sourceFile ?: SourceFile , writeFileCallback ?: WriteFileCallback , cancellationToken ?: CancellationToken , emitOnlyDtsFiles ?: boolean , transformers ?: CustomTransformers , forceDtsEmit ?: boolean ) : EmitResult {
@@ -2017,7 +2006,7 @@ namespace ts {
2017
2006
// This is because in the -out scenario all files need to be emitted, and therefore all
2018
2007
// files need to be type checked. And the way to specify that all files need to be type
2019
2008
// checked is to not pass the file to getEmitResolver.
2020
- const emitResolver = getDiagnosticsProducingTypeChecker ( ) . getEmitResolver ( outFile ( options ) ? undefined : sourceFile , cancellationToken ) ;
2009
+ const emitResolver = getTypeChecker ( ) . getEmitResolver ( outFile ( options ) ? undefined : sourceFile , cancellationToken ) ;
2021
2010
2022
2011
performance . mark ( "beforeEmit" ) ;
2023
2012
@@ -2121,15 +2110,7 @@ namespace ts {
2121
2110
if ( e instanceof OperationCanceledException ) {
2122
2111
// We were canceled while performing the operation. Because our type checker
2123
2112
// might be a bad state, we need to throw it away.
2124
- //
2125
- // Note: we are overly aggressive here. We do not actually *have* to throw away
2126
- // the "noDiagnosticsTypeChecker". However, for simplicity, i'd like to keep
2127
- // the lifetimes of these two TypeCheckers the same. Also, we generally only
2128
- // cancel when the user has made a change anyways. And, in that case, we (the
2129
- // program instance) will get thrown away anyways. So trying to keep one of
2130
- // these type checkers alive doesn't serve much purpose.
2131
- noDiagnosticsTypeChecker = undefined ! ;
2132
- diagnosticsProducingTypeChecker = undefined ! ;
2113
+ typeChecker = undefined ! ;
2133
2114
}
2134
2115
2135
2116
throw e ;
@@ -2153,7 +2134,7 @@ namespace ts {
2153
2134
return emptyArray ;
2154
2135
}
2155
2136
2156
- const typeChecker = getDiagnosticsProducingTypeChecker ( ) ;
2137
+ const typeChecker = getTypeChecker ( ) ;
2157
2138
2158
2139
Debug . assert ( ! ! sourceFile . bindDiagnostics ) ;
2159
2140
@@ -2209,7 +2190,7 @@ namespace ts {
2209
2190
2210
2191
function getSuggestionDiagnostics ( sourceFile : SourceFile , cancellationToken : CancellationToken ) : readonly DiagnosticWithLocation [ ] {
2211
2192
return runWithCancellationToken ( ( ) => {
2212
- return getDiagnosticsProducingTypeChecker ( ) . getSuggestionDiagnostics ( sourceFile , cancellationToken ) ;
2193
+ return getTypeChecker ( ) . getSuggestionDiagnostics ( sourceFile , cancellationToken ) ;
2213
2194
} ) ;
2214
2195
}
2215
2196
@@ -2446,7 +2427,7 @@ namespace ts {
2446
2427
2447
2428
function getDeclarationDiagnosticsForFileNoCache ( sourceFile : SourceFile | undefined , cancellationToken : CancellationToken | undefined ) : readonly DiagnosticWithLocation [ ] {
2448
2429
return runWithCancellationToken ( ( ) => {
2449
- const resolver = getDiagnosticsProducingTypeChecker ( ) . getEmitResolver ( sourceFile , cancellationToken ) ;
2430
+ const resolver = getTypeChecker ( ) . getEmitResolver ( sourceFile , cancellationToken ) ;
2450
2431
// Don't actually write any files since we're just getting diagnostics.
2451
2432
return ts . getDeclarationDiagnostics ( getEmitHost ( noop ) , resolver , sourceFile ) || emptyArray ;
2452
2433
} ) ;
@@ -2497,7 +2478,7 @@ namespace ts {
2497
2478
}
2498
2479
2499
2480
function getGlobalDiagnostics ( ) : SortedReadonlyArray < Diagnostic > {
2500
- return rootNames . length ? sortAndDeduplicateDiagnostics ( getDiagnosticsProducingTypeChecker ( ) . getGlobalDiagnostics ( ) . slice ( ) ) : emptyArray as any as SortedReadonlyArray < Diagnostic > ;
2481
+ return rootNames . length ? sortAndDeduplicateDiagnostics ( getTypeChecker ( ) . getGlobalDiagnostics ( ) . slice ( ) ) : emptyArray as any as SortedReadonlyArray < Diagnostic > ;
2501
2482
}
2502
2483
2503
2484
function getConfigFileParsingDiagnostics ( ) : readonly Diagnostic [ ] {
0 commit comments