From 7031c439782b523c1ced19be452769ccc83a6b5e Mon Sep 17 00:00:00 2001 From: Klaus Meinhardt Date: Fri, 20 Jul 2018 00:16:59 +0200 Subject: [PATCH] correctly detect if strictNullChecks is enabled Fixes: #25808 --- src/compiler/program.ts | 2 +- .../convertCompilerOptionsFromJson.ts | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 857ac30656a..334c054a8fb 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2366,7 +2366,7 @@ namespace ts { } function verifyCompilerOptions() { - if (options.strictPropertyInitialization && !options.strictNullChecks) { + if (options.strictPropertyInitialization && !getStrictOptionValue(options, "strictNullChecks")) { createDiagnosticForOptionName(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "strictPropertyInitialization", "strictNullChecks"); } diff --git a/src/testRunner/unittests/convertCompilerOptionsFromJson.ts b/src/testRunner/unittests/convertCompilerOptionsFromJson.ts index 3b422e9a645..5189a73caf2 100644 --- a/src/testRunner/unittests/convertCompilerOptionsFromJson.ts +++ b/src/testRunner/unittests/convertCompilerOptionsFromJson.ts @@ -436,6 +436,51 @@ namespace ts { ); }); + it("Correctly detects implicitly enabled strictNullChecks ", () => { + assertCompilerOptions( + { + compilerOptions: { + strict: true, + strictPropertyInitialization: true + } + }, "tsconfig.json", + { + compilerOptions: { + strict: true, + strictPropertyInitialization: true + }, + errors: [] + } + ); + }); + + it("Checks dependency of strict options ", () => { + assertCompilerOptions( + { + compilerOptions: { + strict: true, + strictNullChecks: false, + strictPropertyInitialization: true + } + }, "tsconfig.json", + { + compilerOptions: { + strict: true, + strictNullChecks: false, + strictPropertyInitialization: true + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Option 'strictPropertyInitialization' cannot be specified without specifying option 'strictNullChecks'.", + code: Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1.code, + category: Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1.category + }] + } + ); + }); + // jsconfig.json it("Convert correctly format jsconfig.json to compiler-options ", () => { assertCompilerOptions(