Skip to content

Commit a91dfe5

Browse files
committed
Refactor resolveName
1 parent de012c0 commit a91dfe5

File tree

1 file changed

+40
-26
lines changed

1 file changed

+40
-26
lines changed

src/compiler/resolutionCache.ts

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -308,18 +308,24 @@ namespace ts {
308308
return primaryResult;
309309
}
310310

311-
function resolveNamesWithLocalCache<T extends ResolutionWithFailedLookupLocations, R extends ResolutionWithResolvedFileName>(
312-
names: readonly string[],
313-
containingFile: string,
314-
redirectedReference: ResolvedProjectReference | undefined,
315-
cache: Map<Map<T>>,
316-
perDirectoryCacheWithRedirects: CacheWithRedirects<Map<T>>,
317-
loader: (name: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference) => T,
318-
getResolutionWithResolvedFileName: GetResolutionWithResolvedFileName<T, R>,
319-
shouldRetryResolution: (t: T) => boolean,
320-
reusedNames: readonly string[] | undefined,
321-
logChanges: boolean): (R | undefined)[] {
322-
311+
interface ResolveNamesWithLocalCacheInput<T extends ResolutionWithFailedLookupLocations, R extends ResolutionWithResolvedFileName> {
312+
names: readonly string[];
313+
containingFile: string;
314+
redirectedReference: ResolvedProjectReference | undefined;
315+
cache: Map<Map<T>>;
316+
perDirectoryCacheWithRedirects: CacheWithRedirects<Map<T>>;
317+
loader: (name: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference) => T;
318+
getResolutionWithResolvedFileName: GetResolutionWithResolvedFileName<T, R>;
319+
shouldRetryResolution: (t: T) => boolean;
320+
reusedNames?: readonly string[];
321+
logChanges?: boolean;
322+
}
323+
function resolveNamesWithLocalCache<T extends ResolutionWithFailedLookupLocations, R extends ResolutionWithResolvedFileName>({
324+
names, containingFile, redirectedReference,
325+
cache, perDirectoryCacheWithRedirects,
326+
loader, getResolutionWithResolvedFileName,
327+
shouldRetryResolution, reusedNames, logChanges
328+
}: ResolveNamesWithLocalCacheInput<T, R>): (R | undefined)[] {
323329
const path = resolutionHost.toPath(containingFile);
324330
const resolutionsInFile = cache.get(path) || cache.set(path, createMap()).get(path)!;
325331
const dirPath = getDirectoryPath(path);
@@ -404,23 +410,31 @@ namespace ts {
404410
}
405411

406412
function resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[] {
407-
return resolveNamesWithLocalCache<CachedResolvedTypeReferenceDirectiveWithFailedLookupLocations, ResolvedTypeReferenceDirective>(
408-
typeDirectiveNames, containingFile, redirectedReference,
409-
resolvedTypeReferenceDirectives, perDirectoryResolvedTypeReferenceDirectives,
410-
resolveTypeReferenceDirective, getResolvedTypeReferenceDirective,
411-
/*shouldRetryResolution*/ resolution => resolution.resolvedTypeReferenceDirective === undefined,
412-
/*reusedNames*/ undefined, /*logChanges*/ false
413-
);
413+
return resolveNamesWithLocalCache<CachedResolvedTypeReferenceDirectiveWithFailedLookupLocations, ResolvedTypeReferenceDirective>({
414+
names: typeDirectiveNames,
415+
containingFile,
416+
redirectedReference,
417+
cache: resolvedTypeReferenceDirectives,
418+
perDirectoryCacheWithRedirects: perDirectoryResolvedTypeReferenceDirectives,
419+
loader: resolveTypeReferenceDirective,
420+
getResolutionWithResolvedFileName: getResolvedTypeReferenceDirective,
421+
shouldRetryResolution: resolution => resolution.resolvedTypeReferenceDirective === undefined,
422+
});
414423
}
415424

416425
function resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference?: ResolvedProjectReference): (ResolvedModuleFull | undefined)[] {
417-
return resolveNamesWithLocalCache<CachedResolvedModuleWithFailedLookupLocations, ResolvedModuleFull>(
418-
moduleNames, containingFile, redirectedReference,
419-
resolvedModuleNames, perDirectoryResolvedModuleNames,
420-
resolveModuleName, getResolvedModule,
421-
/*shouldRetryResolution*/ resolution => !resolution.resolvedModule || !resolutionExtensionIsTSOrJson(resolution.resolvedModule.extension),
422-
reusedNames, logChangesWhenResolvingModule
423-
);
426+
return resolveNamesWithLocalCache<CachedResolvedModuleWithFailedLookupLocations, ResolvedModuleFull>({
427+
names: moduleNames,
428+
containingFile,
429+
redirectedReference,
430+
cache: resolvedModuleNames,
431+
perDirectoryCacheWithRedirects: perDirectoryResolvedModuleNames,
432+
loader: resolveModuleName,
433+
getResolutionWithResolvedFileName: getResolvedModule,
434+
shouldRetryResolution: resolution => !resolution.resolvedModule || !resolutionExtensionIsTSOrJson(resolution.resolvedModule.extension),
435+
reusedNames,
436+
logChanges: logChangesWhenResolvingModule
437+
});
424438
}
425439

426440
function getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string): CachedResolvedModuleWithFailedLookupLocations | undefined {

0 commit comments

Comments
 (0)