mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-12 01:48:33 -05:00
use Map instead of Array
This commit is contained in:
@@ -594,7 +594,7 @@ namespace ts {
|
||||
let diagnosticsProducingTypeChecker: TypeChecker;
|
||||
let noDiagnosticsTypeChecker: TypeChecker;
|
||||
let classifiableNames: UnderscoreEscapedMap<true>;
|
||||
let unmodifiedSourceFilesWithAmbientModules: SourceFile[] | undefined;
|
||||
const ambientModuleNameToUnmodifiedFileName = createMap<string>();
|
||||
|
||||
const cachedSemanticDiagnosticsForFile: DiagnosticCache<Diagnostic> = {};
|
||||
const cachedDeclarationDiagnosticsForFile: DiagnosticCache<DiagnosticWithLocation> = {};
|
||||
@@ -1006,16 +1006,14 @@ namespace ts {
|
||||
}
|
||||
|
||||
// at least one of declarations should come from non-modified source file
|
||||
const firstUnmodifiedFile = unmodifiedSourceFilesWithAmbientModules && unmodifiedSourceFilesWithAmbientModules.find(
|
||||
f => contains(f.ambientModuleNames, moduleName)
|
||||
);
|
||||
const unmodifiedFile = ambientModuleNameToUnmodifiedFileName.get(moduleName);
|
||||
|
||||
if (!firstUnmodifiedFile) {
|
||||
if (!unmodifiedFile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isTraceEnabled(options, host)) {
|
||||
trace(host, Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified, moduleName, firstUnmodifiedFile.fileName);
|
||||
trace(host, Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified, moduleName, unmodifiedFile);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1204,7 +1202,13 @@ namespace ts {
|
||||
}
|
||||
|
||||
const modifiedFiles = modifiedSourceFiles.map(f => f.oldFile);
|
||||
unmodifiedSourceFilesWithAmbientModules = oldSourceFiles.filter((f) => !!f.ambientModuleNames.length && !contains(modifiedFiles, f));
|
||||
for (const oldFile of oldSourceFiles) {
|
||||
if (!contains(modifiedFiles, oldFile)) {
|
||||
for (const moduleName of oldFile.ambientModuleNames) {
|
||||
ambientModuleNameToUnmodifiedFileName.set(moduleName, oldFile.fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
// try to verify results of module resolution
|
||||
for (const { oldFile: oldSourceFile, newFile: newSourceFile } of modifiedSourceFiles) {
|
||||
const newSourceFilePath = getNormalizedAbsolutePath(newSourceFile.originalFileName, currentDirectory);
|
||||
|
||||
Reference in New Issue
Block a user