diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index bb506b38a6ac..e52f83543af7 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -437,6 +437,8 @@ export default createRule({ isNodeEqual(testNode, node.alternate) ) { identifierOrMemberExpression = testNode; + } else { + return; } } } 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 51442dbc7467..a9ad05c5cef5 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -98,6 +98,42 @@ x ??${equals} 'foo'; 'null != x ? y : x;', 'undefined != x ? y : x;', ` +declare let x: number | undefined; +x !== 15 && x !== undefined ? x : y; + `, + ` +declare let x: number | undefined; +x !== undefined && x !== 15 ? x : y; + `, + ` +declare let x: number | undefined; +15 !== x && undefined !== x ? x : y; + `, + ` +declare let x: number | undefined; +undefined !== x && 15 !== x ? x : y; + `, + ` +declare let x: number | undefined; +15 !== x && x !== undefined ? x : y; + `, + ` +declare let x: number | undefined; +undefined !== x && x !== 15 ? x : y; + `, + ` +declare let x: string | undefined; +x !== 'foo' && x !== undefined ? x : y; + `, + ` +function test(value: number | undefined): number { + return value !== foo() && value !== undefined ? value : 1; +} + `, + ` +const test = (value: boolean | undefined): boolean => value !== undefined && value !== false ? value : false; + `, + ` declare let x: string; x === null ? x : y; `,