@@ -574,7 +574,7 @@ namespace ts {
574
574
let diagnosticsProducingTypeChecker : TypeChecker ;
575
575
let noDiagnosticsTypeChecker : TypeChecker ;
576
576
let classifiableNames : UnderscoreEscapedMap < true > ;
577
- let unmodifiedSourceFilesWithAmbientModules : SourceFile [ ] | undefined ;
577
+ const ambientModuleNameToUnmodifiedFileName = createMap < string > ( ) ;
578
578
579
579
const cachedSemanticDiagnosticsForFile : DiagnosticCache < Diagnostic > = { } ;
580
580
const cachedDeclarationDiagnosticsForFile : DiagnosticCache < DiagnosticWithLocation > = { } ;
@@ -976,16 +976,14 @@ namespace ts {
976
976
}
977
977
978
978
// at least one of declarations should come from non-modified source file
979
- const firstUnmodifiedFile = unmodifiedSourceFilesWithAmbientModules && unmodifiedSourceFilesWithAmbientModules . find (
980
- f => contains ( f . ambientModuleNames , moduleName )
981
- ) ;
979
+ const unmodifiedFile = ambientModuleNameToUnmodifiedFileName . get ( moduleName ) ;
982
980
983
- if ( ! firstUnmodifiedFile ) {
981
+ if ( ! unmodifiedFile ) {
984
982
return false ;
985
983
}
986
984
987
985
if ( isTraceEnabled ( options , host ) ) {
988
- trace ( host , Diagnostics . Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified , moduleName , firstUnmodifiedFile . fileName ) ;
986
+ trace ( host , Diagnostics . Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified , moduleName , unmodifiedFile ) ;
989
987
}
990
988
return true ;
991
989
}
@@ -1179,7 +1177,13 @@ namespace ts {
1179
1177
}
1180
1178
1181
1179
const modifiedFiles = modifiedSourceFiles . map ( f => f . oldFile ) ;
1182
- unmodifiedSourceFilesWithAmbientModules = oldSourceFiles . filter ( ( f ) => ! ! f . ambientModuleNames . length && ! contains ( modifiedFiles , f ) ) ;
1180
+ for ( const oldFile of oldSourceFiles ) {
1181
+ if ( ! contains ( modifiedFiles , oldFile ) ) {
1182
+ for ( const moduleName of oldFile . ambientModuleNames ) {
1183
+ ambientModuleNameToUnmodifiedFileName . set ( moduleName , oldFile . fileName ) ;
1184
+ }
1185
+ }
1186
+ }
1183
1187
// try to verify results of module resolution
1184
1188
for ( const { oldFile : oldSourceFile , newFile : newSourceFile } of modifiedSourceFiles ) {
1185
1189
const newSourceFilePath = getNormalizedAbsolutePath ( newSourceFile . originalFileName , currentDirectory ) ;
0 commit comments