@@ -88,7 +88,7 @@ var ts;
8888 // If changing the text in this section, be sure to test `configureNightly` too.
8989 ts.versionMajorMinor = "3.1";
9090 /** The version of the TypeScript compiler release */
91- ts.version = ts.versionMajorMinor + ".5 ";
91+ ts.version = ts.versionMajorMinor + ".6 ";
9292})(ts || (ts = {}));
9393(function (ts) {
9494 /* @internal */
@@ -84375,7 +84375,7 @@ var ts;
8437584375 var diagnosticsProducingTypeChecker;
8437684376 var noDiagnosticsTypeChecker;
8437784377 var classifiableNames;
84378- var modifiedFilePaths ;
84378+ var ambientModuleNameToUnmodifiedFileName = ts.createMap() ;
8437984379 var cachedSemanticDiagnosticsForFile = {};
8438084380 var cachedDeclarationDiagnosticsForFile = {};
8438184381 var resolvedTypeReferenceDirectives = ts.createMap();
@@ -84619,13 +84619,13 @@ var ts;
8461984619 }
8462084620 return classifiableNames;
8462184621 }
84622- function resolveModuleNamesReusingOldState(moduleNames, containingFile, file, oldProgramState ) {
84622+ function resolveModuleNamesReusingOldState(moduleNames, containingFile, file) {
8462384623 if (structuralIsReused === 0 /* Not */ && !file.ambientModuleNames.length) {
8462484624 // If the old program state does not permit reusing resolutions and `file` does not contain locally defined ambient modules,
8462584625 // the best we can do is fallback to the default logic.
8462684626 return resolveModuleNamesWorker(moduleNames, containingFile);
8462784627 }
84628- var oldSourceFile = oldProgramState.program && oldProgramState.program .getSourceFile(containingFile);
84628+ var oldSourceFile = oldProgram && oldProgram .getSourceFile(containingFile);
8462984629 if (oldSourceFile !== file && file.resolvedModules) {
8463084630 // `file` was created for the new program.
8463184631 //
@@ -84688,7 +84688,7 @@ var ts;
8468884688 }
8468984689 }
8469084690 else {
84691- resolvesToAmbientModuleInNonModifiedFile = moduleNameResolvesToAmbientModuleInNonModifiedFile(moduleName, oldProgramState );
84691+ resolvesToAmbientModuleInNonModifiedFile = moduleNameResolvesToAmbientModuleInNonModifiedFile(moduleName);
8469284692 }
8469384693 if (resolvesToAmbientModuleInNonModifiedFile) {
8469484694 (result || (result = new Array(moduleNames.length)))[i] = predictedToResolveToAmbientModuleMarker;
@@ -84725,12 +84725,9 @@ var ts;
8472584725 return result;
8472684726 // If we change our policy of rechecking failed lookups on each program create,
8472784727 // we should adjust the value returned here.
84728- function moduleNameResolvesToAmbientModuleInNonModifiedFile(moduleName, oldProgramState) {
84729- if (!oldProgramState.program) {
84730- return false;
84731- }
84732- var resolutionToFile = ts.getResolvedModule(oldProgramState.oldSourceFile, moduleName); // TODO: GH#18217
84733- var resolvedFile = resolutionToFile && oldProgramState.program.getSourceFile(resolutionToFile.resolvedFileName);
84728+ function moduleNameResolvesToAmbientModuleInNonModifiedFile(moduleName) {
84729+ var resolutionToFile = ts.getResolvedModule(oldSourceFile, moduleName);
84730+ var resolvedFile = resolutionToFile && oldProgram.getSourceFile(resolutionToFile.resolvedFileName);
8473484731 if (resolutionToFile && resolvedFile && !resolvedFile.externalModuleIndicator) {
8473584732 // In the old program, we resolved to an ambient module that was in the same
8473684733 // place as we expected to find an actual module file.
@@ -84739,12 +84736,12 @@ var ts;
8473984736 return false;
8474084737 }
8474184738 // at least one of declarations should come from non-modified source file
84742- var firstUnmodifiedFile = oldProgramState.program.getSourceFiles().find(function (f) { return !ts.contains(oldProgramState.modifiedFilePaths, f.path) && ts.contains(f.ambientModuleNames, moduleName); } );
84743- if (!firstUnmodifiedFile ) {
84739+ var unmodifiedFile = ambientModuleNameToUnmodifiedFileName.get( moduleName);
84740+ if (!unmodifiedFile ) {
8474484741 return false;
8474584742 }
8474684743 if (ts.isTraceEnabled(options, host)) {
84747- ts.trace(host, ts.Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified, moduleName, firstUnmodifiedFile.fileName );
84744+ ts.trace(host, ts.Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified, moduleName, unmodifiedFile );
8474884745 }
8474984746 return true;
8475084747 }
@@ -84914,15 +84911,23 @@ var ts;
8491484911 if (oldProgram.structureIsReused !== 2 /* Completely */) {
8491584912 return oldProgram.structureIsReused;
8491684913 }
84917- modifiedFilePaths = modifiedSourceFiles.map(function (f) { return f.newFile.path; });
84914+ var modifiedFiles = modifiedSourceFiles.map(function (f) { return f.oldFile; });
84915+ for (var _a = 0, oldSourceFiles_3 = oldSourceFiles; _a < oldSourceFiles_3.length; _a++) {
84916+ var oldFile = oldSourceFiles_3[_a];
84917+ if (!ts.contains(modifiedFiles, oldFile)) {
84918+ for (var _b = 0, _c = oldFile.ambientModuleNames; _b < _c.length; _b++) {
84919+ var moduleName = _c[_b];
84920+ ambientModuleNameToUnmodifiedFileName.set(moduleName, oldFile.fileName);
84921+ }
84922+ }
84923+ }
8491884924 // try to verify results of module resolution
84919- for (var _a = 0, modifiedSourceFiles_1 = modifiedSourceFiles; _a < modifiedSourceFiles_1.length; _a ++) {
84920- var _b = modifiedSourceFiles_1[_a ], oldSourceFile = _b .oldFile, newSourceFile = _b .newFile;
84925+ for (var _d = 0, modifiedSourceFiles_1 = modifiedSourceFiles; _d < modifiedSourceFiles_1.length; _d ++) {
84926+ var _e = modifiedSourceFiles_1[_d ], oldSourceFile = _e .oldFile, newSourceFile = _e .newFile;
8492184927 var newSourceFilePath = ts.getNormalizedAbsolutePath(newSourceFile.originalFileName, currentDirectory);
8492284928 if (resolveModuleNamesWorker) {
8492384929 var moduleNames = getModuleNames(newSourceFile);
84924- var oldProgramState = { program: oldProgram, oldSourceFile: oldSourceFile, modifiedFilePaths: modifiedFilePaths };
84925- var resolutions = resolveModuleNamesReusingOldState(moduleNames, newSourceFilePath, newSourceFile, oldProgramState);
84930+ var resolutions = resolveModuleNamesReusingOldState(moduleNames, newSourceFilePath, newSourceFile);
8492684931 // ensure that module resolution results are still correct
8492784932 var resolutionsChanged = ts.hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, ts.moduleResolutionIsEqualTo);
8492884933 if (resolutionsChanged) {
@@ -84965,8 +84970,8 @@ var ts;
8496584970 }
8496684971 files = newSourceFiles;
8496784972 fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics();
84968- for (var _c = 0, modifiedSourceFiles_2 = modifiedSourceFiles; _c < modifiedSourceFiles_2.length; _c ++) {
84969- var modifiedFile = modifiedSourceFiles_2[_c ];
84973+ for (var _f = 0, modifiedSourceFiles_2 = modifiedSourceFiles; _f < modifiedSourceFiles_2.length; _f ++) {
84974+ var modifiedFile = modifiedSourceFiles_2[_f ];
8497084975 fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile.newFile);
8497184976 }
8497284977 resolvedTypeReferenceDirectives = oldProgram.getResolvedTypeReferenceDirectives();
@@ -85874,8 +85879,7 @@ var ts;
8587485879 if (file.imports.length || file.moduleAugmentations.length) {
8587585880 // Because global augmentation doesn't have string literal name, we can check for global augmentation as such.
8587685881 var moduleNames = getModuleNames(file);
85877- var oldProgramState = { program: oldProgram, oldSourceFile: oldProgram && oldProgram.getSourceFile(file.fileName), modifiedFilePaths: modifiedFilePaths };
85878- var resolutions = resolveModuleNamesReusingOldState(moduleNames, ts.getNormalizedAbsolutePath(file.originalFileName, currentDirectory), file, oldProgramState);
85882+ var resolutions = resolveModuleNamesReusingOldState(moduleNames, ts.getNormalizedAbsolutePath(file.originalFileName, currentDirectory), file);
8587985883 ts.Debug.assert(resolutions.length === moduleNames.length);
8588085884 for (var i = 0; i < moduleNames.length; i++) {
8588185885 var resolution = resolutions[i];
0 commit comments