@@ -151,7 +151,7 @@ namespace ts {
151
151
const toImport = oldFromNew !== undefined
152
152
// If we're at the new location (file was already renamed), need to redo module resolution starting from the old location.
153
153
// TODO:GH#18217
154
- ? getSourceFileToImportFromResolved ( resolveModuleName ( importLiteral . text , oldImportFromPath , program . getCompilerOptions ( ) , host as ModuleResolutionHost ) , oldToNew , host )
154
+ ? getSourceFileToImportFromResolved ( resolveModuleName ( importLiteral . text , oldImportFromPath , program . getCompilerOptions ( ) , host as ModuleResolutionHost ) , oldToNew )
155
155
: getSourceFileToImport ( importedModuleSymbol , importLiteral , sourceFile , program , host , oldToNew ) ;
156
156
157
157
// Need an update if the imported file moved, or the importing file moved and was using a relative path.
@@ -192,28 +192,35 @@ namespace ts {
192
192
const resolved = host . resolveModuleNames
193
193
? host . getResolvedModuleWithFailedLookupLocationsFromCache && host . getResolvedModuleWithFailedLookupLocationsFromCache ( importLiteral . text , importingSourceFile . fileName )
194
194
: program . getResolvedModuleWithFailedLookupLocationsFromCache ( importLiteral . text , importingSourceFile . fileName ) ;
195
- return getSourceFileToImportFromResolved ( resolved , oldToNew , host ) ;
195
+ return getSourceFileToImportFromResolved ( resolved , oldToNew ) ;
196
196
}
197
197
}
198
198
199
- function getSourceFileToImportFromResolved ( resolved : ResolvedModuleWithFailedLookupLocations | undefined , oldToNew : PathUpdater , host : LanguageServiceHost ) : ToImport | undefined {
199
+ function getSourceFileToImportFromResolved ( resolved : ResolvedModuleWithFailedLookupLocations | undefined , oldToNew : PathUpdater ) : ToImport | undefined {
200
200
// Search through all locations looking for a moved file, and only then test already existing files.
201
201
// This is because if `a.ts` is compiled to `a.js` and `a.ts` is moved, we don't want to resolve anything to `a.js`, but to `a.ts`'s new location.
202
- return tryEach ( tryGetNewFile ) || tryEach ( tryGetOldFile ) ;
202
+ if ( ! resolved ) return undefined ;
203
203
204
- function tryEach ( cb : ( oldFileName : string ) => ToImport | undefined ) : ToImport | undefined {
205
- return resolved && (
206
- ( resolved . resolvedModule && cb ( resolved . resolvedModule . resolvedFileName ) ) || firstDefined ( resolved . failedLookupLocations , cb ) ) ;
204
+ // First try resolved module
205
+ if ( resolved . resolvedModule ) {
206
+ const result = tryChange ( resolved . resolvedModule . resolvedFileName ) ;
207
+ if ( result ) return result ;
207
208
}
208
209
209
- function tryGetNewFile ( oldFileName : string ) : ToImport | undefined {
210
- const newFileName = oldToNew ( oldFileName ) ;
211
- return newFileName !== undefined && host . fileExists ! ( newFileName ) ? { newFileName, updated : true } : undefined ; // TODO: GH#18217
210
+ // Then failed lookups except package.json since we dont want to touch them (only included ts/js files)
211
+ const result = forEach ( resolved . failedLookupLocations , tryChangeWithIgnoringPackageJson ) ;
212
+ if ( result ) return result ;
213
+
214
+ // If nothing changed, then result is resolved module file thats not updated
215
+ return resolved . resolvedModule && { newFileName : resolved . resolvedModule . resolvedFileName , updated : false } ;
216
+
217
+ function tryChangeWithIgnoringPackageJson ( oldFileName : string ) {
218
+ return ! endsWith ( oldFileName , "/package.json" ) ? tryChange ( oldFileName ) : undefined ;
212
219
}
213
220
214
- function tryGetOldFile ( oldFileName : string ) : ToImport | undefined {
221
+ function tryChange ( oldFileName : string ) {
215
222
const newFileName = oldToNew ( oldFileName ) ;
216
- return host . fileExists ! ( oldFileName ) ? newFileName !== undefined ? { newFileName, updated : true } : { newFileName : oldFileName , updated : false } : undefined ; // TODO: GH#18217
223
+ return newFileName && { newFileName, updated : true } ;
217
224
}
218
225
}
219
226
0 commit comments