@@ -851,7 +851,7 @@ namespace ts {
851
851
} ) ;
852
852
853
853
const shouldCreateNewSourceFile = shouldProgramCreateNewSourceFiles ( oldProgram , options ) ;
854
- // We set `structuralIsReused` to `undefined` because `tryReuseStructureFromOldProgram` calls `tryReuseStructureFromOldProgram ` which checks
854
+ // We set `structuralIsReused` to `undefined` because `tryReuseStructureFromOldProgram` calls `resolveModuleNamesReusingOldState ` which checks
855
855
// `structuralIsReused`, which would be a TDZ violation if it was not set in advance to `undefined`.
856
856
let structureIsReused : StructureIsReused ;
857
857
structureIsReused = tryReuseStructureFromOldProgram ( ) ; // eslint-disable-line prefer-const
@@ -1184,7 +1184,7 @@ namespace ts {
1184
1184
for ( let i = 0 ; i < moduleNames . length ; i ++ ) {
1185
1185
const moduleName = moduleNames [ i ] ;
1186
1186
// If the source file is unchanged and doesnt have invalidated resolution, reuse the module resolutions
1187
- if ( file === oldSourceFile && ! hasInvalidatedResolution ( oldSourceFile . path ) ) {
1187
+ if ( oldSourceFile && file . version === oldSourceFile . version && ! hasInvalidatedResolution ( oldSourceFile . path ) ) {
1188
1188
const oldResolvedModule = oldProgram ! . getPerFileModuleResolutions ( ) . get ( file . path ) ?. get ( moduleName ) ;
1189
1189
if ( oldResolvedModule ?. resolvedModule ) {
1190
1190
if ( isTraceEnabled ( options , host ) ) {
@@ -1473,7 +1473,9 @@ namespace ts {
1473
1473
( modifiedSourceFiles ||= [ ] ) . push ( newSourceFile ) ;
1474
1474
}
1475
1475
else {
1476
- for ( const moduleName of oldSourceFile . ambientModuleNames ) {
1476
+ // Ensure imports are calculated if the file version didnt change so but its different instance of file
1477
+ collectExternalModuleReferences ( newSourceFile ) ;
1478
+ for ( const moduleName of newSourceFile . ambientModuleNames ) {
1477
1479
( ambientModuleNameToUnmodifiedFileNameUsingOldProgram ||= new Map ( ) ) . set ( moduleName , oldSourceFile . fileName ) ;
1478
1480
}
1479
1481
}
@@ -1544,8 +1546,6 @@ namespace ts {
1544
1546
}
1545
1547
else {
1546
1548
filesByName . set ( newSourceFile . path , newSourceFile ) ;
1547
- // Ensure imports are calculated if the file version didnt change so but its different instance of file
1548
- collectExternalModuleReferences ( newSourceFile ) ;
1549
1549
}
1550
1550
} ) ;
1551
1551
const oldFilesByNameMap = oldProgram . getFilesByNameMap ( ) ;
0 commit comments