Skip to content

Commit 6329a0d

Browse files
authored
Add traces for module resolution reuse (microsoft#44282)
1 parent 5fde871 commit 6329a0d

File tree

5 files changed

+154
-28
lines changed

5 files changed

+154
-28
lines changed

src/compiler/diagnosticMessages.json

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4637,11 +4637,11 @@
46374637
"category": "Message",
46384638
"code": 6182
46394639
},
4640-
"Reusing resolution of module '{0}' to file '{1}' from old program.": {
4640+
"Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.": {
46414641
"category": "Message",
46424642
"code": 6183
46434643
},
4644-
"Reusing module resolutions originating in '{0}' since resolutions are unchanged from old program.": {
4644+
"Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.": {
46454645
"category": "Message",
46464646
"code": 6184
46474647
},
@@ -5073,6 +5073,46 @@
50735073
"category": "Message",
50745074
"code": 6388
50755075
},
5076+
"Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved.": {
5077+
"category": "Message",
5078+
"code": 6389
5079+
},
5080+
"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.": {
5081+
"category": "Message",
5082+
"code": 6390
5083+
},
5084+
"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.": {
5085+
"category": "Message",
5086+
"code": 6391
5087+
},
5088+
"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved.": {
5089+
"category": "Message",
5090+
"code": 6392
5091+
},
5092+
"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.": {
5093+
"category": "Message",
5094+
"code": 6393
5095+
},
5096+
"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.": {
5097+
"category": "Message",
5098+
"code": 6394
5099+
},
5100+
"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved.": {
5101+
"category": "Message",
5102+
"code": 6395
5103+
},
5104+
"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.": {
5105+
"category": "Message",
5106+
"code": 6396
5107+
},
5108+
"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.": {
5109+
"category": "Message",
5110+
"code": 6397
5111+
},
5112+
"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved.": {
5113+
"category": "Message",
5114+
"code": 6398
5115+
},
50765116

50775117
"The expected type comes from property '{0}' which is declared here on type '{1}'": {
50785118
"category": "Message",

src/compiler/program.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1288,7 +1288,15 @@ namespace ts {
12881288
const oldResolvedModule = getResolvedModule(oldSourceFile, moduleName);
12891289
if (oldResolvedModule) {
12901290
if (isTraceEnabled(options, host)) {
1291-
trace(host, Diagnostics.Reusing_resolution_of_module_0_to_file_1_from_old_program, moduleName, getNormalizedAbsolutePath(file.originalFileName, currentDirectory));
1291+
trace(host,
1292+
oldResolvedModule.packageId ?
1293+
Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 :
1294+
Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2,
1295+
moduleName,
1296+
getNormalizedAbsolutePath(file.originalFileName, currentDirectory),
1297+
oldResolvedModule.resolvedFileName,
1298+
oldResolvedModule.packageId && packageIdToString(oldResolvedModule.packageId)
1299+
);
12921300
}
12931301
(result || (result = new Array(moduleNames.length)))[i] = oldResolvedModule;
12941302
(reusedNames || (reusedNames = [])).push(moduleName);

src/compiler/resolutionCache.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ namespace ts {
3838

3939
interface ResolutionWithResolvedFileName {
4040
resolvedFileName: string | undefined;
41+
packagetId?: PackageId;
4142
}
4243

4344
interface CachedResolvedModuleWithFailedLookupLocations extends ResolvedModuleWithFailedLookupLocations, ResolutionWithFailedLookupLocations {
@@ -396,6 +397,29 @@ namespace ts {
396397
const resolutionInDirectory = perDirectoryResolution.get(name);
397398
if (resolutionInDirectory) {
398399
resolution = resolutionInDirectory;
400+
const host = resolutionHost.getCompilerHost?.() || resolutionHost;
401+
if (isTraceEnabled(compilerOptions, host)) {
402+
const resolved = getResolutionWithResolvedFileName(resolution);
403+
trace(
404+
host,
405+
loader === resolveModuleName as unknown ?
406+
resolved?.resolvedFileName ?
407+
resolved.packagetId ?
408+
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4:
409+
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3:
410+
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved :
411+
resolved?.resolvedFileName ?
412+
resolved.packagetId ?
413+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4 :
414+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3 :
415+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_resolved,
416+
name,
417+
containingFile,
418+
getDirectoryPath(containingFile),
419+
resolved?.resolvedFileName,
420+
resolved?.packagetId && packageIdToString(resolved.packagetId)
421+
);
422+
}
399423
}
400424
else {
401425
resolution = loader(name, containingFile, compilerOptions, resolutionHost.getCompilerHost?.() || resolutionHost, redirectedReference);
@@ -413,6 +437,30 @@ namespace ts {
413437
logChanges = false;
414438
}
415439
}
440+
else {
441+
const host = resolutionHost.getCompilerHost?.() || resolutionHost;
442+
if (isTraceEnabled(compilerOptions, host) && !seenNamesInFile.has(name)) {
443+
const resolved = getResolutionWithResolvedFileName(resolution);
444+
trace(
445+
host,
446+
loader === resolveModuleName as unknown ?
447+
resolved?.resolvedFileName ?
448+
resolved.packagetId ?
449+
Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 :
450+
Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2 :
451+
Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved :
452+
resolved?.resolvedFileName ?
453+
resolved.packagetId ?
454+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 :
455+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2 :
456+
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved,
457+
name,
458+
containingFile,
459+
resolved?.resolvedFileName,
460+
resolved?.packagetId && packageIdToString(resolved.packagetId)
461+
);
462+
}
463+
}
416464
Debug.assert(resolution !== undefined && !resolution.isInvalidated);
417465
seenNamesInFile.set(name, true);
418466
resolvedModules.push(getResolutionWithResolvedFileName(resolution));

src/testRunner/unittests/reuseProgramStructure.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -677,8 +677,8 @@ namespace ts {
677677
"File 'node_modules/@types/typerefs2/package.json' does not exist.",
678678
"File 'node_modules/@types/typerefs2/index.d.ts' exist - use it as a name resolution result.",
679679
"======== Type reference directive 'typerefs2' was successfully resolved to 'node_modules/@types/typerefs2/index.d.ts', primary: true. ========",
680-
"Reusing resolution of module './b2' to file 'f2.ts' from old program.",
681-
"Reusing resolution of module './f1' to file 'f2.ts' from old program."
680+
"Reusing resolution of module './b2' from 'f2.ts' of old program, it was successfully resolved to 'b2.ts'.",
681+
"Reusing resolution of module './f1' from 'f2.ts' of old program, it was successfully resolved to 'f1.ts'."
682682
], "program2: reuse module resolutions in f2 since it is unchanged");
683683
}
684684

@@ -701,8 +701,8 @@ namespace ts {
701701
"File 'node_modules/@types/typerefs2/package.json' does not exist.",
702702
"File 'node_modules/@types/typerefs2/index.d.ts' exist - use it as a name resolution result.",
703703
"======== Type reference directive 'typerefs2' was successfully resolved to 'node_modules/@types/typerefs2/index.d.ts', primary: true. ========",
704-
"Reusing resolution of module './b2' to file 'f2.ts' from old program.",
705-
"Reusing resolution of module './f1' to file 'f2.ts' from old program."
704+
"Reusing resolution of module './b2' from 'f2.ts' of old program, it was successfully resolved to 'b2.ts'.",
705+
"Reusing resolution of module './f1' from 'f2.ts' of old program, it was successfully resolved to 'f1.ts'."
706706
], "program3: reuse module resolutions in f2 since it is unchanged");
707707
}
708708

@@ -726,8 +726,8 @@ namespace ts {
726726
"File 'node_modules/@types/typerefs2/package.json' does not exist.",
727727
"File 'node_modules/@types/typerefs2/index.d.ts' exist - use it as a name resolution result.",
728728
"======== Type reference directive 'typerefs2' was successfully resolved to 'node_modules/@types/typerefs2/index.d.ts', primary: true. ========",
729-
"Reusing resolution of module './b2' to file 'f2.ts' from old program.",
730-
"Reusing resolution of module './f1' to file 'f2.ts' from old program."
729+
"Reusing resolution of module './b2' from 'f2.ts' of old program, it was successfully resolved to 'b2.ts'.",
730+
"Reusing resolution of module './f1' from 'f2.ts' of old program, it was successfully resolved to 'f1.ts'.",
731731
], "program_4: reuse module resolutions in f2 since it is unchanged");
732732
}
733733

@@ -767,8 +767,8 @@ namespace ts {
767767
"File 'node_modules/@types/typerefs2/package.json' does not exist.",
768768
"File 'node_modules/@types/typerefs2/index.d.ts' exist - use it as a name resolution result.",
769769
"======== Type reference directive 'typerefs2' was successfully resolved to 'node_modules/@types/typerefs2/index.d.ts', primary: true. ========",
770-
"Reusing resolution of module './b2' to file 'f2.ts' from old program.",
771-
"Reusing resolution of module './f1' to file 'f2.ts' from old program."
770+
"Reusing resolution of module './b2' from 'f2.ts' of old program, it was successfully resolved to 'b2.ts'.",
771+
"Reusing resolution of module './f1' from 'f2.ts' of old program, it was successfully resolved to 'f1.ts'.",
772772
], "program_6: reuse module resolutions in f2 since it is unchanged");
773773
}
774774

@@ -787,8 +787,8 @@ namespace ts {
787787
"File 'node_modules/@types/typerefs2/package.json' does not exist.",
788788
"File 'node_modules/@types/typerefs2/index.d.ts' exist - use it as a name resolution result.",
789789
"======== Type reference directive 'typerefs2' was successfully resolved to 'node_modules/@types/typerefs2/index.d.ts', primary: true. ========",
790-
"Reusing resolution of module './b2' to file 'f2.ts' from old program.",
791-
"Reusing resolution of module './f1' to file 'f2.ts' from old program."
790+
"Reusing resolution of module './b2' from 'f2.ts' of old program, it was successfully resolved to 'b2.ts'.",
791+
"Reusing resolution of module './f1' from 'f2.ts' of old program, it was successfully resolved to 'f1.ts'.",
792792
], "program_7 should reuse module resolutions in f2 since it is unchanged");
793793
}
794794
});

0 commit comments

Comments
 (0)