From 30423b7ffbe90a02cc78b317f19d89a2e3bb1551 Mon Sep 17 00:00:00 2001 From: Chiawen Chen Date: Fri, 20 May 2022 08:31:41 +0800 Subject: [PATCH] [Fix] `display-name`: fix false positive for HOF returning only nulls --- lib/util/Components.js | 9 +++++++-- tests/lib/rules/display-name.js | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/util/Components.js b/lib/util/Components.js index 30fa7841a4..eb60d845a5 100644 --- a/lib/util/Components.js +++ b/lib/util/Components.js @@ -498,8 +498,13 @@ function componentRule(rule, context) { return undefined; } - // case: function any() { return (props) { return not-jsx-and-not-null } } - if (node.parent.type === 'ReturnStatement' && !utils.isReturningJSX(node) && !utils.isReturningOnlyNull(node)) { + // case: const any = () => { return (props) => null } + // case: const any = () => (props) => null + if ( + (node.parent.type === 'ReturnStatement' || (node.parent.type === 'ArrowFunctionExpression' && node.parent.expression)) + && !utils.isReturningJSX(node) + && !utils.isReturningOnlyNull(node) + ) { return undefined; } diff --git a/tests/lib/rules/display-name.js b/tests/lib/rules/display-name.js index 662f8e273c..be0c8442e5 100644 --- a/tests/lib/rules/display-name.js +++ b/tests/lib/rules/display-name.js @@ -579,6 +579,15 @@ ruleTester.run('display-name', rule, { } `, }, + { + // issue #3289 + code: ` + export const demo = (a) => (b) => { + if (a == null) return null; + return b; + } + `, + }, ]), invalid: parsers.all([