@@ -118,30 +118,6 @@ namespace ts {
118
118
sourceFile . resolvedModules [ moduleNameText ] = resolvedModule ;
119
119
}
120
120
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 {
123
- if ( resolved === undefined ) {
124
- return undefined ;
125
- }
126
- // At least one of `resolevdTsFileName` or `resolvedJsFileName` should be defined.
127
- else if ( resolved . resolvedTsFileName || resolved . resolvedJsFileName ) {
128
- const { resolvedFileName, resolvedTsFileName, resolvedJsFileName } = resolved as ResolvedModule ;
129
- Debug . assert ( resolvedFileName === ( resolvedTsFileName || resolvedJsFileName ) ) ;
130
- return resolved ;
131
- }
132
- else {
133
- // For backwards compatibility, if both `resolvedTsFileName` and `resolvedJsFileName` are undefined, we infer one of them to define.
134
- const { resolvedFileName, isExternalLibraryImport } = resolved ;
135
- if ( fileExtensionIsAny ( resolvedFileName , supportedTypeScriptExtensions ) ) {
136
- return { resolvedFileName, resolvedTsFileName : resolvedFileName , resolvedJsFileName : undefined , isExternalLibraryImport } ;
137
- }
138
- else {
139
- Debug . assert ( fileExtensionIsAny ( resolvedFileName , supportedJavascriptExtensions ) ) ;
140
- return { resolvedFileName, resolvedTsFileName : undefined , resolvedJsFileName : resolvedFileName , isExternalLibraryImport } ;
141
- }
142
- }
143
- }
144
-
145
121
export function setResolvedTypeReferenceDirective ( sourceFile : SourceFile , typeReferenceDirectiveName : string , resolvedTypeReferenceDirective : ResolvedTypeReferenceDirective ) : void {
146
122
if ( ! sourceFile . resolvedTypeReferenceDirectiveNames ) {
147
123
sourceFile . resolvedTypeReferenceDirectiveNames = createMap < ResolvedTypeReferenceDirective > ( ) ;
@@ -157,9 +133,39 @@ namespace ts {
157
133
*/
158
134
export function moduleResolutionIsEqualTo ( oldResolution : ResolvedModule , newResolution : ResolvedModule ) : boolean {
159
135
return oldResolution . isExternalLibraryImport === newResolution . isExternalLibraryImport &&
136
+ oldResolution . extension === newResolution . extension &&
160
137
oldResolution . resolvedFileName === newResolution . resolvedFileName ;
161
138
}
162
139
140
+ /** True if an extension is one of the supported TypeScript extensions. */
141
+ export function extensionIsTypeScript ( ext : Extension ) : boolean {
142
+ return ext <= Extension . LastTypeScriptExtension ;
143
+ }
144
+
145
+ /**
146
+ * Gets the extension from a path.
147
+ * Path must have a valid extension.
148
+ */
149
+ export function extensionFromPath ( path : string ) : Extension {
150
+ if ( fileExtensionIs ( path , ".d.ts" ) ) {
151
+ return Extension . Dts ;
152
+ }
153
+ if ( fileExtensionIs ( path , ".ts" ) ) {
154
+ return Extension . Ts ;
155
+ }
156
+ if ( fileExtensionIs ( path , ".tsx" ) ) {
157
+ return Extension . Tsx ;
158
+ }
159
+ if ( fileExtensionIs ( path , ".js" ) ) {
160
+ return Extension . Js ;
161
+ }
162
+ if ( fileExtensionIs ( path , ".jsx" ) ) {
163
+ return Extension . Jsx ;
164
+ }
165
+ Debug . fail ( `File ${ path } has unknown extension.` ) ;
166
+ return Extension . Js ;
167
+ }
168
+
163
169
/* @internal */
164
170
export function typeDirectiveIsEqualTo ( oldResolution : ResolvedTypeReferenceDirective , newResolution : ResolvedTypeReferenceDirective ) : boolean {
165
171
return oldResolution . resolvedFileName === newResolution . resolvedFileName && oldResolution . primary === newResolution . primary ;
0 commit comments