Skip to content

Commit 530fc3c

Browse files
andrewbranchc0sta
authored andcommitted
Show implied options in --showConfig (microsoft#56701)
1 parent cfbb206 commit 530fc3c

File tree

12 files changed

+315
-158
lines changed

12 files changed

+315
-158
lines changed

Diff for: package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
"playwright": "^1.38.0",
7979
"source-map-support": "^0.5.21",
8080
"tslib": "^2.5.0",
81-
"typescript": "^5.3.2",
81+
"typescript": "5.4.0-dev.20231206",
8282
"which": "^2.0.2"
8383
},
8484
"overrides": {

Diff for: src/compiler/commandLineParser.ts

+18-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
CommandLineOptionOfListType,
1616
CompilerOptions,
1717
CompilerOptionsValue,
18+
computedOptions,
1819
ConfigFileSpecs,
1920
containsPath,
2021
convertToRelativePath,
@@ -103,6 +104,7 @@ import {
103104
removeTrailingDirectorySeparator,
104105
returnTrue,
105106
ScriptTarget,
107+
some,
106108
startsWith,
107109
StringLiteral,
108110
SyntaxKind,
@@ -2475,9 +2477,10 @@ export function convertToTSConfig(configParseResult: ParsedCommandLine, configFi
24752477
),
24762478
f => getRelativePathFromFile(getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), getNormalizedAbsolutePath(f, host.getCurrentDirectory()), getCanonicalFileName),
24772479
);
2478-
const optionMap = serializeCompilerOptions(configParseResult.options, { configFilePath: getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), useCaseSensitiveFileNames: host.useCaseSensitiveFileNames });
2480+
const pathOptions = { configFilePath: getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), useCaseSensitiveFileNames: host.useCaseSensitiveFileNames };
2481+
const optionMap = serializeCompilerOptions(configParseResult.options, pathOptions);
24792482
const watchOptionMap = configParseResult.watchOptions && serializeWatchOptions(configParseResult.watchOptions);
2480-
const config = {
2483+
const config: TSConfig & { watchOptions?: object; } = {
24812484
compilerOptions: {
24822485
...optionMapToObject(optionMap),
24832486
showConfig: undefined,
@@ -2500,6 +2503,19 @@ export function convertToTSConfig(configParseResult: ParsedCommandLine, configFi
25002503
} : {}),
25012504
compileOnSave: !!configParseResult.compileOnSave ? true : undefined,
25022505
};
2506+
2507+
const providedKeys = new Set(optionMap.keys());
2508+
const impliedCompilerOptions: Record<string, CompilerOptionsValue> = {};
2509+
for (const option in computedOptions) {
2510+
if (!providedKeys.has(option) && some(computedOptions[option as keyof typeof computedOptions].dependencies, dep => providedKeys.has(dep))) {
2511+
const implied = computedOptions[option as keyof typeof computedOptions].computeValue(configParseResult.options);
2512+
const defaultValue = computedOptions[option as keyof typeof computedOptions].computeValue({});
2513+
if (implied !== defaultValue) {
2514+
impliedCompilerOptions[option] = computedOptions[option as keyof typeof computedOptions].computeValue(configParseResult.options);
2515+
}
2516+
}
2517+
}
2518+
assign(config.compilerOptions, optionMapToObject(serializeCompilerOptions(impliedCompilerOptions, pathOptions)));
25032519
return config;
25042520
}
25052521

0 commit comments

Comments
 (0)