Skip to content

Commit 7ed9e44

Browse files
authored
Merge pull request #28059 from ajafff/lsh-resolve-return-type
fix return type of resolveModuleNames and resolveTypeReferenceDirectives
2 parents 76addd7 + 5b3fe6e commit 7ed9e44

File tree

10 files changed

+38
-38
lines changed

10 files changed

+38
-38
lines changed

src/compiler/program.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ namespace ts {
599599
const cachedSemanticDiagnosticsForFile: DiagnosticCache<Diagnostic> = {};
600600
const cachedDeclarationDiagnosticsForFile: DiagnosticCache<DiagnosticWithLocation> = {};
601601

602-
let resolvedTypeReferenceDirectives = createMap<ResolvedTypeReferenceDirective>();
602+
let resolvedTypeReferenceDirectives = createMap<ResolvedTypeReferenceDirective | undefined>();
603603
let fileProcessingDiagnostics = createDiagnosticCollection();
604604

605605
// The below settings are to track if a .js file should be add to the program if loaded via searching under node_modules.
@@ -656,7 +656,7 @@ namespace ts {
656656
resolveModuleNamesWorker = (moduleNames, containingFile, _reusedNames, redirectedReference) => loadWithLocalCache<ResolvedModuleFull>(Debug.assertEachDefined(moduleNames), containingFile, redirectedReference, loader);
657657
}
658658

659-
let resolveTypeReferenceDirectiveNamesWorker: (typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference) => ResolvedTypeReferenceDirective[];
659+
let resolveTypeReferenceDirectiveNamesWorker: (typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference) => (ResolvedTypeReferenceDirective | undefined)[];
660660
if (host.resolveTypeReferenceDirectives) {
661661
resolveTypeReferenceDirectiveNamesWorker = (typeDirectiveNames, containingFile, redirectedReference) => host.resolveTypeReferenceDirectives!(Debug.assertEachDefined(typeDirectiveNames), containingFile, redirectedReference);
662662
}
@@ -2335,7 +2335,7 @@ namespace ts {
23352335
}
23362336
}
23372337

2338-
function processTypeReferenceDirective(typeReferenceDirective: string, resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective,
2338+
function processTypeReferenceDirective(typeReferenceDirective: string, resolvedTypeReferenceDirective?: ResolvedTypeReferenceDirective,
23392339
refFile?: SourceFile, refPos?: number, refEnd?: number): void {
23402340

23412341
// If we already found this library as a primary reference - nothing to do

src/compiler/resolutionCache.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ namespace ts {
55
startRecordingFilesWithChangedResolutions(): void;
66
finishRecordingFilesWithChangedResolutions(): Path[] | undefined;
77

8-
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference?: ResolvedProjectReference): ResolvedModuleFull[];
8+
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference?: ResolvedProjectReference): (ResolvedModuleFull | undefined)[];
99
getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string): CachedResolvedModuleWithFailedLookupLocations | undefined;
10-
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
10+
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
1111

1212
invalidateResolutionOfFile(filePath: Path): void;
1313
removeResolutionsOfFile(filePath: Path): void;
@@ -250,7 +250,7 @@ namespace ts {
250250
loader: (name: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference) => T,
251251
getResolutionWithResolvedFileName: GetResolutionWithResolvedFileName<T, R>,
252252
reusedNames: string[] | undefined,
253-
logChanges: boolean): R[] {
253+
logChanges: boolean): (R | undefined)[] {
254254

255255
const path = resolutionHost.toPath(containingFile);
256256
const resolutionsInFile = cache.get(path) || cache.set(path, createMap()).get(path)!;
@@ -335,7 +335,7 @@ namespace ts {
335335
}
336336
}
337337

338-
function resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[] {
338+
function resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[] {
339339
return resolveNamesWithLocalCache<CachedResolvedTypeReferenceDirectiveWithFailedLookupLocations, ResolvedTypeReferenceDirective>(
340340
typeDirectiveNames, containingFile, redirectedReference,
341341
resolvedTypeReferenceDirectives, perDirectoryResolvedTypeReferenceDirectives,
@@ -344,7 +344,7 @@ namespace ts {
344344
);
345345
}
346346

347-
function resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference?: ResolvedProjectReference): ResolvedModuleFull[] {
347+
function resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference?: ResolvedProjectReference): (ResolvedModuleFull | undefined)[] {
348348
return resolveNamesWithLocalCache<CachedResolvedModuleWithFailedLookupLocations, ResolvedModuleFull>(
349349
moduleNames, containingFile, redirectedReference,
350350
resolvedModuleNames, perDirectoryResolvedModuleNames,

src/compiler/types.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2714,7 +2714,7 @@ namespace ts {
27142714
// It is used to resolve module names in the checker.
27152715
// Content of this field should never be used directly - use getResolvedModuleFileName/setResolvedModuleFileName functions instead
27162716
/* @internal */ resolvedModules?: Map<ResolvedModuleFull | undefined>;
2717-
/* @internal */ resolvedTypeReferenceDirectiveNames: Map<ResolvedTypeReferenceDirective>;
2717+
/* @internal */ resolvedTypeReferenceDirectiveNames: Map<ResolvedTypeReferenceDirective | undefined>;
27182718
/* @internal */ imports: ReadonlyArray<StringLiteralLike>;
27192719
/**
27202720
* When a file's references are redirected due to project reference directives,
@@ -2889,7 +2889,7 @@ namespace ts {
28892889
/* @internal */ getTypeCount(): number;
28902890

28912891
/* @internal */ getFileProcessingDiagnostics(): DiagnosticCollection;
2892-
/* @internal */ getResolvedTypeReferenceDirectives(): Map<ResolvedTypeReferenceDirective>;
2892+
/* @internal */ getResolvedTypeReferenceDirectives(): Map<ResolvedTypeReferenceDirective | undefined>;
28932893
isSourceFileFromExternalLibrary(file: SourceFile): boolean;
28942894
isSourceFileDefaultLibrary(file: SourceFile): boolean;
28952895

@@ -2997,7 +2997,7 @@ namespace ts {
29972997

29982998
getSourceFiles(): ReadonlyArray<SourceFile>;
29992999
getSourceFile(fileName: string): SourceFile | undefined;
3000-
getResolvedTypeReferenceDirectives(): ReadonlyMap<ResolvedTypeReferenceDirective>;
3000+
getResolvedTypeReferenceDirectives(): ReadonlyMap<ResolvedTypeReferenceDirective | undefined>;
30013001

30023002
readonly redirectTargetsMap: RedirectTargetsMap;
30033003
}
@@ -4981,7 +4981,7 @@ namespace ts {
49814981
/**
49824982
* This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
49834983
*/
4984-
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
4984+
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
49854985
getEnvironmentVariable?(name: string): string | undefined;
49864986
/* @internal */ onReleaseOldSourceFile?(oldSourceFile: SourceFile, oldOptions: CompilerOptions, hasSourceFileByPath: boolean): void;
49874987
/* @internal */ hasInvalidatedResolution?: HasInvalidatedResolution;

src/compiler/utilities.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,9 @@ namespace ts {
227227
sourceFile.resolvedModules.set(moduleNameText, resolvedModule);
228228
}
229229

230-
export function setResolvedTypeReferenceDirective(sourceFile: SourceFile, typeReferenceDirectiveName: string, resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective): void {
230+
export function setResolvedTypeReferenceDirective(sourceFile: SourceFile, typeReferenceDirectiveName: string, resolvedTypeReferenceDirective?: ResolvedTypeReferenceDirective): void {
231231
if (!sourceFile.resolvedTypeReferenceDirectiveNames) {
232-
sourceFile.resolvedTypeReferenceDirectiveNames = createMap<ResolvedTypeReferenceDirective>();
232+
sourceFile.resolvedTypeReferenceDirectiveNames = createMap<ResolvedTypeReferenceDirective | undefined>();
233233
}
234234

235235
sourceFile.resolvedTypeReferenceDirectiveNames.set(typeReferenceDirectiveName, resolvedTypeReferenceDirective);

src/compiler/watch.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,9 @@ namespace ts {
338338
getEnvironmentVariable?(name: string): string | undefined;
339339

340340
/** If provided, used to resolve the module names, otherwise typescript's default module resolution */
341-
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModule[];
341+
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModule | undefined)[];
342342
/** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
343-
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
343+
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
344344
}
345345

346346
/** Internal interface used to wire emit through same host */

src/server/project.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,15 +368,15 @@ namespace ts.server {
368368
return !this.isWatchedMissingFile(path) && this.directoryStructureHost.fileExists(file);
369369
}
370370

371-
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModuleFull[] {
371+
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModuleFull | undefined)[] {
372372
return this.resolutionCache.resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference);
373373
}
374374

375375
getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string): ResolvedModuleWithFailedLookupLocations | undefined {
376376
return this.resolutionCache.getResolvedModuleWithFailedLookupLocationsFromCache(moduleName, containingFile);
377377
}
378378

379-
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[] {
379+
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[] {
380380
return this.resolutionCache.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile, redirectedReference);
381381
}
382382

src/services/shims.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,29 +331,29 @@ namespace ts {
331331
private loggingEnabled = false;
332332
private tracingEnabled = false;
333333

334-
public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModuleFull[];
335-
public resolveTypeReferenceDirectives: (typeDirectiveNames: string[], containingFile: string) => ResolvedTypeReferenceDirective[];
334+
public resolveModuleNames: (moduleName: string[], containingFile: string) => (ResolvedModuleFull | undefined)[];
335+
public resolveTypeReferenceDirectives: (typeDirectiveNames: string[], containingFile: string) => (ResolvedTypeReferenceDirective | undefined)[];
336336
public directoryExists: (directoryName: string) => boolean;
337337

338338
constructor(private shimHost: LanguageServiceShimHost) {
339339
// if shimHost is a COM object then property check will become method call with no arguments.
340340
// 'in' does not have this effect.
341341
if ("getModuleResolutionsForFile" in this.shimHost) {
342-
this.resolveModuleNames = (moduleNames: string[], containingFile: string): ResolvedModuleFull[] => {
342+
this.resolveModuleNames = (moduleNames, containingFile) => {
343343
const resolutionsInFile = <MapLike<string>>JSON.parse(this.shimHost.getModuleResolutionsForFile!(containingFile)); // TODO: GH#18217
344344
return map(moduleNames, name => {
345345
const result = getProperty(resolutionsInFile, name);
346-
return result ? { resolvedFileName: result, extension: extensionFromPath(result), isExternalLibraryImport: false } : undefined!; // TODO: GH#18217
346+
return result ? { resolvedFileName: result, extension: extensionFromPath(result), isExternalLibraryImport: false } : undefined;
347347
});
348348
};
349349
}
350350
if ("directoryExists" in this.shimHost) {
351351
this.directoryExists = directoryName => this.shimHost.directoryExists(directoryName);
352352
}
353353
if ("getTypeReferenceDirectiveResolutionsForFile" in this.shimHost) {
354-
this.resolveTypeReferenceDirectives = (typeDirectiveNames: string[], containingFile: string) => {
354+
this.resolveTypeReferenceDirectives = (typeDirectiveNames, containingFile) => {
355355
const typeDirectivesForFile = <MapLike<ResolvedTypeReferenceDirective>>JSON.parse(this.shimHost.getTypeReferenceDirectiveResolutionsForFile!(containingFile)); // TODO: GH#18217
356-
return map(typeDirectiveNames, name => getProperty(typeDirectivesForFile, name)!); // TODO: GH#18217
356+
return map(typeDirectiveNames, name => getProperty(typeDirectivesForFile, name));
357357
};
358358
}
359359
}

src/services/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,9 @@ namespace ts {
212212
*
213213
* If this is implemented, `getResolvedModuleWithFailedLookupLocationsFromCache` should be too.
214214
*/
215-
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModule[];
215+
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModule | undefined)[];
216216
getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string): ResolvedModuleWithFailedLookupLocations | undefined;
217-
resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
217+
resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
218218
/* @internal */ hasInvalidatedResolution?: HasInvalidatedResolution;
219219
/* @internal */ hasChangedAutomaticTypeDirectiveNames?: boolean;
220220

tests/baselines/reference/api/tsserverlibrary.d.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,7 +2694,7 @@ declare namespace ts {
26942694
/**
26952695
* This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
26962696
*/
2697-
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
2697+
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
26982698
getEnvironmentVariable?(name: string): string | undefined;
26992699
createHash?(data: string): string;
27002700
}
@@ -4386,9 +4386,9 @@ declare namespace ts {
43864386
/** If provided is used to get the environment variable */
43874387
getEnvironmentVariable?(name: string): string | undefined;
43884388
/** If provided, used to resolve the module names, otherwise typescript's default module resolution */
4389-
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModule[];
4389+
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModule | undefined)[];
43904390
/** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
4391-
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
4391+
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
43924392
}
43934393
/**
43944394
* Host to create watch with root files and options
@@ -4656,9 +4656,9 @@ declare namespace ts {
46564656
realpath?(path: string): string;
46574657
fileExists?(path: string): boolean;
46584658
getTypeRootsVersion?(): number;
4659-
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModule[];
4659+
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModule | undefined)[];
46604660
getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string): ResolvedModuleWithFailedLookupLocations | undefined;
4661-
resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
4661+
resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
46624662
getDirectories?(directoryName: string): string[];
46634663
/**
46644664
* Gets a set of custom transformers to use during emit.
@@ -8151,9 +8151,9 @@ declare namespace ts.server {
81518151
readFile(fileName: string): string | undefined;
81528152
writeFile(fileName: string, content: string): void;
81538153
fileExists(file: string): boolean;
8154-
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): ResolvedModuleFull[];
8154+
resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModuleFull | undefined)[];
81558155
getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string): ResolvedModuleWithFailedLookupLocations | undefined;
8156-
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): ResolvedTypeReferenceDirective[];
8156+
resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
81578157
directoryExists(path: string): boolean;
81588158
getDirectories(path: string): string[];
81598159
log(s: string): void;

0 commit comments

Comments
 (0)