Skip to content

Commit 809b9d7

Browse files
committed
Write resolutions to output
1 parent 6fb8889 commit 809b9d7

File tree

3 files changed

+66
-50
lines changed

3 files changed

+66
-50
lines changed

src/compiler/moduleNameResolver.ts

Lines changed: 57 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -533,20 +533,6 @@ function getCandidateFromTypeRoot(typeRoot: string, typeReferenceDirectiveName:
533533
* is assumed to be the same as root directory of the project.
534534
*/
535535
export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: ResolutionMode): ResolvedTypeReferenceDirectiveWithFailedLookupLocations {
536-
// @ts-ignore
537-
globalThis.writeTraceFile?.({
538-
call: "resolveTypeReferenceDirective",
539-
args: {
540-
name: typeReferenceDirectiveName,
541-
containingFile,
542-
compilerOptions: options,
543-
resolutionMode,
544-
redirectedReference: redirectedReference && {
545-
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
546-
commandLine: { options: redirectedReference.commandLine.options },
547-
},
548-
},
549-
});
550536
Debug.assert(typeof typeReferenceDirectiveName === "string", "Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.");
551537
const traceEnabled = isTraceEnabled(options, host);
552538
if (redirectedReference) {
@@ -566,6 +552,21 @@ export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string
566552
trace(host, Diagnostics.Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1, typeReferenceDirectiveName, containingDirectory);
567553
traceResult(result);
568554
}
555+
// @ts-ignore
556+
globalThis.writeTraceFile?.({
557+
call: "resolveTypeReferenceDirective",
558+
args: {
559+
name: typeReferenceDirectiveName,
560+
containingFile,
561+
compilerOptions: options,
562+
resolutionMode,
563+
redirectedReference: redirectedReference && {
564+
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
565+
commandLine: { options: redirectedReference.commandLine.options },
566+
},
567+
},
568+
return: result,
569+
});
569570
return result;
570571
}
571572

@@ -656,6 +657,21 @@ export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string
656657
}
657658
}
658659
if (traceEnabled) traceResult(result);
660+
// @ts-ignore
661+
globalThis.writeTraceFile?.({
662+
call: "resolveTypeReferenceDirective",
663+
args: {
664+
name: typeReferenceDirectiveName,
665+
containingFile,
666+
compilerOptions: options,
667+
resolutionMode,
668+
redirectedReference: redirectedReference && {
669+
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
670+
commandLine: { options: redirectedReference.commandLine.options },
671+
},
672+
},
673+
return: result,
674+
});
659675
return result;
660676

661677
function traceResult(result: ResolvedTypeReferenceDirectiveWithFailedLookupLocations) {
@@ -1413,20 +1429,6 @@ export function resolveModuleNameFromCache(moduleName: string, containingFile: s
14131429
}
14141430

14151431
export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ResolutionMode): ResolvedModuleWithFailedLookupLocations {
1416-
// @ts-ignore
1417-
globalThis.writeTraceFile?.({
1418-
call: "resolveModuleName",
1419-
args: {
1420-
name: moduleName,
1421-
containingFile,
1422-
compilerOptions,
1423-
resolutionMode,
1424-
redirectedReference: redirectedReference && {
1425-
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
1426-
commandLine: { options: redirectedReference.commandLine.options },
1427-
},
1428-
},
1429-
});
14301432
const traceEnabled = isTraceEnabled(compilerOptions, host);
14311433
if (redirectedReference) {
14321434
compilerOptions = redirectedReference.commandLine.options;
@@ -1502,6 +1504,24 @@ export function resolveModuleName(moduleName: string, containingFile: string, co
15021504
}
15031505
}
15041506

1507+
if (traceEnabled || !moduleName.startsWith("@typescript/")) {
1508+
// @ts-ignore
1509+
globalThis.writeTraceFile?.({
1510+
call: "resolveModuleName",
1511+
args: {
1512+
name: moduleName,
1513+
containingFile,
1514+
compilerOptions,
1515+
resolutionMode,
1516+
redirectedReference: redirectedReference && {
1517+
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
1518+
commandLine: { options: redirectedReference.commandLine.options },
1519+
},
1520+
},
1521+
return: result,
1522+
});
1523+
}
1524+
15051525
return result;
15061526
}
15071527

@@ -2420,16 +2440,19 @@ export interface PackageJsonInfoContents {
24202440
* @internal
24212441
*/
24222442
export function getPackageScopeForPath(directory: string, state: ModuleResolutionState): PackageJsonInfo | undefined {
2423-
// @ts-ignore
2424-
globalThis.writeTraceFile?.({
2425-
call: "getPackageScopeForPath",
2426-
args: { directory },
2427-
});
2428-
return forEachAncestorDirectoryStoppingAtGlobalCache(
2443+
const result = forEachAncestorDirectoryStoppingAtGlobalCache(
24292444
state.host,
24302445
directory,
24312446
dir => getPackageJsonInfo(dir, /*onlyRecordFailures*/ false, state),
24322447
);
2448+
if (state.traceEnabled) {
2449+
// @ts-ignore
2450+
globalThis.writeTraceFile?.({
2451+
call: "getPackageScopeForPath",
2452+
args: { directory },
2453+
});
2454+
}
2455+
return result;
24332456
}
24342457

24352458
function getVersionPathsOfPackageJsonInfo(packageJsonInfo: PackageJsonInfo, state: ModuleResolutionState): VersionPaths | undefined {

src/compiler/utilities.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8936,7 +8936,7 @@ const _computedOptions = createComputedCompilerOptions({
89368936
},
89378937
},
89388938
moduleResolution: {
8939-
dependencies: ["module", "target", "traceResolution"],
8939+
dependencies: ["module", "target"],
89408940
computeValue: (compilerOptions): ModuleResolutionKind => {
89418941
let moduleResolution = compilerOptions.moduleResolution;
89428942
if (moduleResolution === undefined) {
@@ -8954,11 +8954,11 @@ const _computedOptions = createComputedCompilerOptions({
89548954
moduleResolution = ModuleResolutionKind.Bundler;
89558955
break;
89568956
default:
8957-
moduleResolution = ModuleResolutionKind.Classic;
8957+
moduleResolution = ModuleResolutionKind.Bundler;
89588958
break;
89598959
}
89608960
}
8961-
if (moduleResolution === ModuleResolutionKind.Node10 && compilerOptions.traceResolution) {
8961+
if (moduleResolution === ModuleResolutionKind.Node10) {
89628962
moduleResolution = ModuleResolutionKind.Bundler;
89638963
}
89648964
return moduleResolution;

src/testRunner/compilerRunner.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ import * as vfs from "./_namespaces/vfs.js";
1616
import * as vpath from "./_namespaces/vpath.js";
1717

1818
require("fs").mkdirSync("trace-tests", { recursive: true });
19-
// @ts-ignore
20-
globalThis.outputFile = `trace-tests/${require("crypto").randomBytes(16).toString("hex")}`;
19+
const outputFile = `trace-tests/${require("crypto").randomBytes(16).toString("hex")}`;
2120

2221
export const enum CompilerTestType {
2322
Conformance,
@@ -253,23 +252,17 @@ class CompilerTest {
253252
const traceResolution = tsConfigOptions?.traceResolution || this.harnessSettings.traceResolution;
254253
const baseUrl = tsConfigOptions?.baseUrl || this.harnessSettings.baseUrl;
255254
const rootDirs = tsConfigOptions?.rootDirs || this.harnessSettings.rootDirs;
256-
const moduleResolution = tsConfigOptions?.moduleResolution || this.harnessSettings.moduleResolution;
257-
if (
258-
traceResolution
259-
&& !baseUrl
260-
&& !rootDirs
261-
&& moduleResolution !== ts.ModuleResolutionKind.Classic
262-
&& (`${moduleResolution}`.toLowerCase()) !== "classic"
263-
) {
264-
if (moduleResolution === ts.ModuleResolutionKind.Node10 || ["node", "node10"].includes(("" + moduleResolution).toLowerCase())) {
255+
if (!baseUrl && !rootDirs && units.length > 1 && units.some(unit => /import[\s(]|require\(|<reference/.test(unit.content))) {
256+
if (["node", "node10"].includes(this.harnessSettings.moduleResolution?.toLowerCase())) {
265257
this.harnessSettings.moduleResolution = "bundler";
266258
}
267259
// @ts-ignore
268-
globalThis.writeTraceFile = json => require("fs").appendFileSync(globalThis.outputFile, JSON.stringify(json) + "\n", "utf8");
260+
globalThis.writeTraceFile = json => require("fs").appendFileSync(outputFile, JSON.stringify(json) + "\n", "utf8");
269261
// @ts-ignore
270262
globalThis.writeTraceFile({
271263
test: this.configuredName,
272-
files: units,
264+
trace: !!traceResolution,
265+
files: units.map(unit => ({ name: unit.name, content: unit.name.endsWith("package.json") ? unit.content : "" })),
273266
});
274267
}
275268

0 commit comments

Comments
 (0)