Skip to content

Commit df20cf3

Browse files
author
Andy Hanson
committed
Remove "ResolvedModuleFromHost" type and just make resolvedTsFileName and resolvedJsFileName optional properties
(but still automatically infer one of them to supply if the host supplied neither)
1 parent 1d201c1 commit df20cf3

File tree

2 files changed

+9
-15
lines changed

2 files changed

+9
-15
lines changed

src/compiler/types.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3302,9 +3302,9 @@ namespace ts {
33023302
*/
33033303
resolvedFileName: string;
33043304
/** TypeScript (.d.ts, .ts, .tsx) file that the module was resolved to. This will be preferred over a JS file. */
3305-
resolvedTsFileName: string | undefined;
3305+
resolvedTsFileName?: string;
33063306
/** JavaScript (or .jsx) file that the module was resolved to. This should be returned even if '--allowJs' (or '--jsx') is disabled. */
3307-
resolvedJsFileName: string | undefined;
3307+
resolvedJsFileName?: string;
33083308
/**
33093309
* Denotes if 'resolvedFileName' is isExternalLibraryImport and thus should be a proper external module:
33103310
* - be a .d.ts file
@@ -3314,13 +3314,6 @@ namespace ts {
33143314
isExternalLibraryImport: boolean;
33153315
}
33163316

3317-
/**
3318-
* For backwards compatibility, a host may choose not to return `resolvedTsFileName` and `resolvedJsFileName` from a result ResolvedModule,
3319-
* in which case they will be inferred from the file extension.
3320-
* Prefer to return a full ResolvedModule.
3321-
*/
3322-
export type ResolvedModuleFromHost = { resolvedFileName: string; isExternalLibraryImport: boolean } | ResolvedModule;
3323-
33243317
export interface ResolvedModuleWithFailedLookupLocations {
33253318
resolvedModule: ResolvedModule | undefined;
33263319
failedLookupLocations: string[];
@@ -3358,7 +3351,7 @@ namespace ts {
33583351
* If resolveModuleNames is implemented then implementation for members from ModuleResolutionHost can be just
33593352
* 'throw new Error("NotImplemented")'
33603353
*/
3361-
resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModuleFromHost[];
3354+
resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[];
33623355
/**
33633356
* This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
33643357
*/

src/compiler/utilities.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,18 +118,19 @@ namespace ts {
118118
sourceFile.resolvedModules[moduleNameText] = resolvedModule;
119119
}
120120

121-
/** Host may have omitted resolvedTsFileName and resolvedJsFileName, in which case we should infer them from the file extension of resolvedFileName. */
122-
export function convertResolvedModuleFromHost(resolved: ResolvedModuleFromHost | undefined): ResolvedModule | undefined {
121+
/** An older host may have omitted resolvedTsFileName and resolvedJsFileName, in which case we should infer them from the file extension of resolvedFileName. */
122+
export function convertResolvedModuleFromHost(resolved: ResolvedModule | undefined): ResolvedModule | undefined {
123123
if (resolved === undefined) {
124124
return undefined;
125125
}
126-
// `resolvedTsFileName` and `resolvedJsFileName` should be present as properties even if undefined.
127-
else if ("resolvedTsFileName" in resolved) {
126+
// At least one of `resolevdTsFileName` or `resolvedJsFileName` should be defined.
127+
else if (resolved.resolvedTsFileName || resolved.resolvedJsFileName) {
128128
const { resolvedFileName, resolvedTsFileName, resolvedJsFileName } = resolved as ResolvedModule;
129129
Debug.assert(resolvedFileName === (resolvedTsFileName || resolvedJsFileName));
130-
return resolved as ResolvedModule;
130+
return resolved;
131131
}
132132
else {
133+
// For backwards compatibility, if both `resolvedTsFileName` and `resolvedJsFileName` are undefined, we infer one of them to define.
133134
const { resolvedFileName, isExternalLibraryImport } = resolved;
134135
if (fileExtensionIsAny(resolvedFileName, supportedTypeScriptExtensions)) {
135136
return { resolvedFileName, resolvedTsFileName: resolvedFileName, resolvedJsFileName: undefined, isExternalLibraryImport };

0 commit comments

Comments
 (0)