Skip to content

Commit da7f68d

Browse files
committed
use Map instead of Array
1 parent fd6565d commit da7f68d

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/compiler/program.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)