@@ -121,14 +121,6 @@ namespace ts {
121121 const buckets = createMap < Map < DocumentRegistryEntry > > ( ) ;
122122 const getCanonicalFileName = createGetCanonicalFileName ( ! ! useCaseSensitiveFileNames ) ;
123123
124- function getBucketForCompilationSettings ( key : DocumentRegistryBucketKey , createIfMissing : boolean ) : Map < DocumentRegistryEntry > {
125- let bucket = buckets . get ( key ) ;
126- if ( ! bucket && createIfMissing ) {
127- buckets . set ( key , bucket = createMap < DocumentRegistryEntry > ( ) ) ;
128- }
129- return bucket ! ; // TODO: GH#18217
130- }
131-
132124 function reportStats ( ) {
133125 const bucketInfoArray = arrayFrom ( buckets . keys ( ) ) . filter ( name => name && name . charAt ( 0 ) === "_" ) . map ( name => {
134126 const entries = buckets . get ( name ) ! ;
@@ -178,7 +170,7 @@ namespace ts {
178170 acquiring : boolean ,
179171 scriptKind ?: ScriptKind ) : SourceFile {
180172
181- const bucket = getBucketForCompilationSettings ( key , /*createIfMissing*/ true ) ;
173+ const bucket = getOrUpdate < Map < DocumentRegistryEntry > > ( buckets , key , createMap ) ;
182174 let entry = bucket . get ( path ) ;
183175 const scriptTarget = scriptKind === ScriptKind . JSON ? ScriptTarget . JSON : compilationSettings . target || ScriptTarget . ES5 ;
184176 if ( ! entry && externalCache ) {
@@ -238,9 +230,7 @@ namespace ts {
238230 }
239231
240232 function releaseDocumentWithKey ( path : Path , key : DocumentRegistryBucketKey ) : void {
241- const bucket = getBucketForCompilationSettings ( key , /*createIfMissing*/ false ) ;
242- Debug . assert ( bucket !== undefined ) ;
243-
233+ const bucket = Debug . assertDefined ( buckets . get ( key ) ) ;
244234 const entry = bucket . get ( path ) ! ;
245235 entry . languageServiceRefCount -- ;
246236
0 commit comments