From 841d45f8b45715083cebe612ce970220cb1a5be2 Mon Sep 17 00:00:00 2001 From: auvred Date: Fri, 14 Jul 2023 19:52:57 +0000 Subject: [PATCH] fix(eslint-plugin): [prefer-nullish-coalescing] handle case when type of left side is null or undefined --- .../src/rules/prefer-nullish-coalescing.ts | 2 + .../rules/prefer-nullish-coalescing.test.ts | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index 99bc76429d21..f9a953f501cf 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -310,6 +310,8 @@ export default util.createRule({ .filter((flag): flag is number => flag !== undefined) .reduce((previous, flag) => previous | flag, 0); if ( + type.flags !== ts.TypeFlags.Null && + type.flags !== ts.TypeFlags.Undefined && (type as ts.UnionOrIntersectionType).types.some(t => tsutils.isTypeFlagSet(t, ignorableFlags), ) diff --git a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts index 022eb5cdb8bc..9ba8d2dd34f2 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -1208,5 +1208,47 @@ x || y; }, ], }, + { + code: ` +declare const x: null; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +const x = undefined; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +null || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +undefined || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, ], });