mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Fix incorrect usage of getResolvedTypeReferenceDirectives and some refactoring (#58527)
This commit is contained in:
+12
-8
@@ -1243,11 +1243,11 @@ export function isReferenceFileLocation(location: ReferenceFileLocation | Synthe
|
||||
export function getReferencedFileLocation(program: Program, ref: ReferencedFile): ReferenceFileLocation | SyntheticReferenceFileLocation {
|
||||
const file = Debug.checkDefined(program.getSourceFileByPath(ref.file));
|
||||
const { kind, index } = ref;
|
||||
let pos: number | undefined, end: number | undefined, packageId: PackageId | undefined, resolutionMode: FileReference["resolutionMode"] | undefined;
|
||||
let pos: number | undefined, end: number | undefined, packageId: PackageId | undefined;
|
||||
switch (kind) {
|
||||
case FileIncludeKind.Import:
|
||||
const importLiteral = getModuleNameStringLiteralAt(file, index);
|
||||
packageId = program.getResolvedModule(file, importLiteral.text, program.getModeForUsageLocation(file, importLiteral))?.resolvedModule?.packageId;
|
||||
packageId = program.getResolvedModuleFromModuleSpecifier(importLiteral, file)?.resolvedModule?.packageId;
|
||||
if (importLiteral.pos === -1) return { file, packageId, text: importLiteral.text };
|
||||
pos = skipTrivia(file.text, importLiteral.pos);
|
||||
end = importLiteral.end;
|
||||
@@ -1256,8 +1256,8 @@ export function getReferencedFileLocation(program: Program, ref: ReferencedFile)
|
||||
({ pos, end } = file.referencedFiles[index]);
|
||||
break;
|
||||
case FileIncludeKind.TypeReferenceDirective:
|
||||
({ pos, end, resolutionMode } = file.typeReferenceDirectives[index]);
|
||||
packageId = program.getResolvedTypeReferenceDirective(file, toFileNameLowerCase(file.typeReferenceDirectives[index].fileName), resolutionMode || file.impliedNodeFormat)?.resolvedTypeReferenceDirective?.packageId;
|
||||
({ pos, end } = file.typeReferenceDirectives[index]);
|
||||
packageId = program.getResolvedTypeReferenceDirectiveFromTypeReferenceDirective(file.typeReferenceDirectives[index], file)?.resolvedTypeReferenceDirective?.packageId;
|
||||
break;
|
||||
case FileIncludeKind.LibReferenceDirective:
|
||||
({ pos, end } = file.libReferenceDirectives[index]);
|
||||
@@ -1930,6 +1930,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
resolvedLibProcessing = undefined;
|
||||
resolvedModulesProcessing = undefined;
|
||||
resolvedTypeReferenceDirectiveNamesProcessing = undefined;
|
||||
resolvedTypeReferenceDirectives = undefined!;
|
||||
|
||||
const program: Program = {
|
||||
getRootFileNames: () => rootNames,
|
||||
@@ -1961,7 +1962,6 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
getInstantiationCount: () => getTypeChecker().getInstantiationCount(),
|
||||
getRelationCacheSizes: () => getTypeChecker().getRelationCacheSizes(),
|
||||
getFileProcessingDiagnostics: () => fileProcessingDiagnostics,
|
||||
getResolvedTypeReferenceDirectives: () => resolvedTypeReferenceDirectives,
|
||||
getAutomaticTypeDirectiveNames: () => automaticTypeDirectiveNames!,
|
||||
getAutomaticTypeDirectiveResolutions: () => automaticTypeDirectiveResolutions,
|
||||
isSourceFileFromExternalLibrary,
|
||||
@@ -1980,6 +1980,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
getResolvedModule,
|
||||
getResolvedModuleFromModuleSpecifier,
|
||||
getResolvedTypeReferenceDirective,
|
||||
getResolvedTypeReferenceDirectiveFromTypeReferenceDirective,
|
||||
forEachResolvedModule,
|
||||
forEachResolvedTypeReferenceDirective,
|
||||
getCurrentPackagesMap: () => packageMap,
|
||||
@@ -2076,8 +2077,8 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
return resolvedModules?.get(file.path)?.get(moduleName, mode);
|
||||
}
|
||||
|
||||
function getResolvedModuleFromModuleSpecifier(moduleSpecifier: StringLiteralLike): ResolvedModuleWithFailedLookupLocations | undefined {
|
||||
const sourceFile = getSourceFileOfNode(moduleSpecifier);
|
||||
function getResolvedModuleFromModuleSpecifier(moduleSpecifier: StringLiteralLike, sourceFile?: SourceFile): ResolvedModuleWithFailedLookupLocations | undefined {
|
||||
sourceFile ??= getSourceFileOfNode(moduleSpecifier);
|
||||
Debug.assertIsDefined(sourceFile, "`moduleSpecifier` must have a `SourceFile` ancestor. Use `program.getResolvedModule` instead to provide the containing file and resolution mode.");
|
||||
return getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
|
||||
}
|
||||
@@ -2086,6 +2087,10 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
return resolvedTypeReferenceDirectiveNames?.get(file.path)?.get(typeDirectiveName, mode);
|
||||
}
|
||||
|
||||
function getResolvedTypeReferenceDirectiveFromTypeReferenceDirective(typeRef: FileReference, sourceFile: SourceFile) {
|
||||
return getResolvedTypeReferenceDirective(sourceFile, toFileNameLowerCase(typeRef.fileName), typeRef.resolutionMode || sourceFile.impliedNodeFormat);
|
||||
}
|
||||
|
||||
function forEachResolvedModule(
|
||||
callback: (resolution: ResolvedModuleWithFailedLookupLocations, moduleName: string, mode: ResolutionMode, filePath: Path) => void,
|
||||
file?: SourceFile,
|
||||
@@ -2718,7 +2723,6 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
files = newSourceFiles;
|
||||
fileReasons = oldProgram.getFileIncludeReasons();
|
||||
fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics();
|
||||
resolvedTypeReferenceDirectives = oldProgram.getResolvedTypeReferenceDirectives();
|
||||
automaticTypeDirectiveNames = oldProgram.getAutomaticTypeDirectiveNames();
|
||||
automaticTypeDirectiveResolutions = oldProgram.getAutomaticTypeDirectiveResolutions();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user