Skip to content

Commit e5b2755

Browse files
committed
Switch program to store name to ResolvedTypeReferenceDirective
1 parent 4c5c704 commit e5b2755

File tree

5 files changed

+17
-16
lines changed

5 files changed

+17
-16
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38212,11 +38212,11 @@ namespace ts {
3821238212
if (resolvedTypeReferenceDirectives) {
3821338213
// populate reverse mapping: file path -> type reference directive that was resolved to this file
3821438214
fileToDirective = new Map<string, string>();
38215-
resolvedTypeReferenceDirectives.forEach((resolvedDirective, key) => {
38216-
if (!resolvedDirective || !resolvedDirective.resolvedFileName) {
38215+
resolvedTypeReferenceDirectives.forEach(({ resolvedTypeReferenceDirective }, key) => {
38216+
if (!resolvedTypeReferenceDirective || !resolvedTypeReferenceDirective.resolvedFileName) {
3821738217
return;
3821838218
}
38219-
const file = host.getSourceFile(resolvedDirective.resolvedFileName);
38219+
const file = host.getSourceFile(resolvedTypeReferenceDirective.resolvedFileName);
3822038220
if (file) {
3822138221
// Add the transitive closure of path references loaded by this file (as long as they are not)
3822238222
// part of an existing type reference.

src/compiler/program.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ namespace ts {
729729
const cachedBindAndCheckDiagnosticsForFile: DiagnosticCache<Diagnostic> = {};
730730
const cachedDeclarationDiagnosticsForFile: DiagnosticCache<DiagnosticWithLocation> = {};
731731

732-
let resolvedTypeReferenceDirectives = new Map<string, ResolvedTypeReferenceDirective | undefined>();
732+
let resolvedTypeReferenceDirectives = new Map<string, ResolvedTypeReferenceDirectiveWithFailedLookupLocations>();
733733
let perFileModuleResolutions = new Map<Path, ESMap<string, ResolvedModuleWithFailedLookupLocations>>();
734734
let perFileTypeReferenceResolutions = new Map<Path, ESMap<string, ResolvedTypeReferenceDirectiveWithFailedLookupLocations>>();
735735
let perFileModuleResolutionsUsingOldProgram = new Map<Path, ESMap<string, ResolvedModuleWithFailedLookupLocations>>();
@@ -2828,16 +2828,17 @@ namespace ts {
28282828

28292829
function processTypeReferenceDirective(
28302830
typeReferenceDirective: string,
2831-
{ resolvedTypeReferenceDirective }: ResolvedTypeReferenceDirectiveWithFailedLookupLocations,
2831+
resolved: ResolvedTypeReferenceDirectiveWithFailedLookupLocations,
28322832
refFile?: RefFile
28332833
): void {
28342834

28352835
// If we already found this library as a primary reference - nothing to do
28362836
const previousResolution = resolvedTypeReferenceDirectives.get(typeReferenceDirective);
2837-
if (previousResolution && previousResolution.primary) {
2837+
if (previousResolution?.resolvedTypeReferenceDirective?.primary) {
28382838
return;
28392839
}
28402840
let saveResolution = true;
2841+
const { resolvedTypeReferenceDirective } = resolved;
28412842
if (resolvedTypeReferenceDirective) {
28422843
if (resolvedTypeReferenceDirective.isExternalLibraryImport) currentNodeModulesDepth++;
28432844

@@ -2848,11 +2849,11 @@ namespace ts {
28482849
else {
28492850
// If we already resolved to this file, it must have been a secondary reference. Check file contents
28502851
// for sameness and possibly issue an error
2851-
if (previousResolution) {
2852+
if (previousResolution?.resolvedTypeReferenceDirective) {
28522853
// Don't bother reading the file again if it's the same file.
2853-
if (resolvedTypeReferenceDirective.resolvedFileName !== previousResolution.resolvedFileName) {
2854+
if (resolvedTypeReferenceDirective.resolvedFileName !== previousResolution.resolvedTypeReferenceDirective.resolvedFileName) {
28542855
const otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName!);
2855-
const existingFile = getSourceFile(previousResolution.resolvedFileName!)!;
2856+
const existingFile = getSourceFile(previousResolution.resolvedTypeReferenceDirective.resolvedFileName!)!;
28562857
if (otherFileText !== existingFile.text) {
28572858
// Try looking up ref for original file
28582859
const refs = !refFile ? refFileMap && refFileMap.get(existingFile.path) : undefined;
@@ -2864,14 +2865,14 @@ namespace ts {
28642865
Diagnostics.Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict,
28652866
typeReferenceDirective,
28662867
resolvedTypeReferenceDirective.resolvedFileName,
2867-
previousResolution.resolvedFileName
2868+
previousResolution.resolvedTypeReferenceDirective.resolvedFileName
28682869
) :
28692870
createRefFileDiagnostic(
28702871
refFile,
28712872
Diagnostics.Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict,
28722873
typeReferenceDirective,
28732874
resolvedTypeReferenceDirective.resolvedFileName,
2874-
previousResolution.resolvedFileName
2875+
previousResolution.resolvedTypeReferenceDirective.resolvedFileName
28752876
)
28762877
);
28772878
}
@@ -2896,7 +2897,7 @@ namespace ts {
28962897
}
28972898

28982899
if (saveResolution) {
2899-
resolvedTypeReferenceDirectives.set(typeReferenceDirective, resolvedTypeReferenceDirective);
2900+
resolvedTypeReferenceDirectives.set(typeReferenceDirective, resolved);
29002901
}
29012902
}
29022903

src/compiler/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3769,7 +3769,7 @@ namespace ts {
37693769
getRelationCacheSizes(): { assignable: number, identity: number, subtype: number, strictSubtype: number };
37703770

37713771
/* @internal */ getFileProcessingDiagnostics(): DiagnosticCollection;
3772-
/* @internal */ getResolvedTypeReferenceDirectives(): ESMap<string, ResolvedTypeReferenceDirective | undefined>;
3772+
/* @internal */ getResolvedTypeReferenceDirectives(): ESMap<string, ResolvedTypeReferenceDirectiveWithFailedLookupLocations>;
37733773
isSourceFileFromExternalLibrary(file: SourceFile): boolean;
37743774
isSourceFileDefaultLibrary(file: SourceFile): boolean;
37753775

@@ -3906,7 +3906,7 @@ namespace ts {
39063906

39073907
getSourceFiles(): readonly SourceFile[];
39083908
getSourceFile(fileName: string): SourceFile | undefined;
3909-
getResolvedTypeReferenceDirectives(): ReadonlyESMap<string, ResolvedTypeReferenceDirective | undefined>;
3909+
getResolvedTypeReferenceDirectives(): ReadonlyESMap<string, ResolvedTypeReferenceDirectiveWithFailedLookupLocations>;
39103910
getProjectReferenceRedirect(fileName: string): string | undefined;
39113911
isSourceOfProjectReferenceRedirect(fileName: string): boolean;
39123912

src/services/goToDefinition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ namespace ts.GoToDefinition {
124124
const typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position);
125125
if (typeReferenceDirective) {
126126
const reference = program.getResolvedTypeReferenceDirectives().get(typeReferenceDirective.fileName);
127-
const file = reference && program.getSourceFile(reference.resolvedFileName!); // TODO:GH#18217
127+
const file = reference?.resolvedTypeReferenceDirective && program.getSourceFile(reference.resolvedTypeReferenceDirective.resolvedFileName!); // TODO:GH#18217
128128
return file && { fileName: typeReferenceDirective.fileName, file };
129129
}
130130

src/services/importTracker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ namespace ts.FindAllReferences {
352352
}
353353
for (const ref of referencingFile.typeReferenceDirectives) {
354354
const referenced = program.getResolvedTypeReferenceDirectives().get(ref.fileName);
355-
if (referenced !== undefined && referenced.resolvedFileName === (searchSourceFile as SourceFile).fileName) {
355+
if (referenced?.resolvedTypeReferenceDirective?.resolvedFileName === (searchSourceFile as SourceFile).fileName) {
356356
refs.push({ kind: "reference", referencingFile, ref });
357357
}
358358
}

0 commit comments

Comments
 (0)