@@ -574,7 +574,7 @@ namespace ts {
574574 let diagnosticsProducingTypeChecker : TypeChecker ;
575575 let noDiagnosticsTypeChecker : TypeChecker ;
576576 let classifiableNames : UnderscoreEscapedMap < true > ;
577- let unmodifiedSourceFilesWithAmbientModules : SourceFile [ ] | undefined ;
577+ const ambientModuleNameToUnmodifiedFileName = createMap < string > ( ) ;
578578
579579 const cachedSemanticDiagnosticsForFile : DiagnosticCache < Diagnostic > = { } ;
580580 const cachedDeclarationDiagnosticsForFile : DiagnosticCache < DiagnosticWithLocation > = { } ;
@@ -976,16 +976,14 @@ namespace ts {
976976 }
977977
978978 // 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 ) ;
982980
983- if ( ! firstUnmodifiedFile ) {
981+ if ( ! unmodifiedFile ) {
984982 return false ;
985983 }
986984
987985 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 ) ;
989987 }
990988 return true ;
991989 }
@@ -1179,7 +1177,13 @@ namespace ts {
11791177 }
11801178
11811179 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+ }
11831187 // try to verify results of module resolution
11841188 for ( const { oldFile : oldSourceFile , newFile : newSourceFile } of modifiedSourceFiles ) {
11851189 const newSourceFilePath = getNormalizedAbsolutePath ( newSourceFile . originalFileName , currentDirectory ) ;
0 commit comments