mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-20 05:17:43 -05:00
Handle strict flag when writing tsbuildinfo (#44394)
* Add test showing how setting strict is not preserved in tsbuildinfo Test for #44305 * Handle strict flag when writing tsbuildinfo Fixes #44305 * Apply suggestions from code review Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com> Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
This commit is contained in:
@@ -853,8 +853,14 @@ namespace ts {
|
||||
const { optionsNameMap } = getOptionsNameMap();
|
||||
|
||||
for (const name of getOwnKeys(options).sort(compareStringsCaseSensitive)) {
|
||||
const optionInfo = optionsNameMap.get(name.toLowerCase());
|
||||
if (optionInfo?.affectsEmit || optionInfo?.affectsSemanticDiagnostics || name === "skipLibCheck" || name === "skipDefaultLibCheck") {
|
||||
const optionKey = name.toLowerCase();
|
||||
const optionInfo = optionsNameMap.get(optionKey);
|
||||
if (optionInfo?.affectsEmit || optionInfo?.affectsSemanticDiagnostics ||
|
||||
// We need to store `strict`, even though it won't be examined directly, so that the
|
||||
// flags it controls (e.g. `strictNullChecks`) will be retrieved correctly from the buildinfo
|
||||
optionKey === "strict" ||
|
||||
// We need to store these to determine whether `lib` files need to be rechecked.
|
||||
optionKey === "skiplibcheck" || optionKey === "skipdefaultlibcheck") {
|
||||
(result ||= {})[name] = convertToReusableCompilerOptionValue(
|
||||
optionInfo,
|
||||
options[name] as CompilerOptionsValue,
|
||||
|
||||
@@ -566,6 +566,8 @@ namespace ts {
|
||||
{
|
||||
name: "strict",
|
||||
type: "boolean",
|
||||
// Though this affects semantic diagnostics, affectsSemanticDiagnostics is not set here
|
||||
// The value of each strictFlag depends on own strictFlag value or this and never accessed directly.
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Type_Checking,
|
||||
description: Diagnostics.Enable_all_strict_type_checking_options
|
||||
|
||||
@@ -400,5 +400,23 @@ declare global {
|
||||
},
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
verifyTscSerializedIncrementalEdits({
|
||||
scenario: "incremental",
|
||||
subScenario: "when project has strict true",
|
||||
commandLineArgs: ["-noEmit", "-p", `src/project`],
|
||||
fs: () => loadProjectFromFiles({
|
||||
"/src/project/tsconfig.json": JSON.stringify({
|
||||
compilerOptions: {
|
||||
incremental: true,
|
||||
strict: true,
|
||||
},
|
||||
}),
|
||||
"/src/project/class1.ts": `export class class1 {}`,
|
||||
}),
|
||||
incrementalScenarios: noChangeOnlyRuns,
|
||||
baselinePrograms: true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user