From c4dd9d0f4bd0794a182bbced61a03a5ec4345ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowak?= Date: Wed, 8 May 2019 21:29:41 +0200 Subject: [PATCH] Verify function expression --- .../no-unused-class-component-methods.js | 7 ++++- .../no-unused-class-component-methods.js | 31 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-unused-class-component-methods.js b/lib/rules/no-unused-class-component-methods.js index 3f3919fc6b..ab75920f60 100644 --- a/lib/rules/no-unused-class-component-methods.js +++ b/lib/rules/no-unused-class-component-methods.js @@ -58,7 +58,12 @@ module.exports = { node.type === 'ClassProperty' && node.value.type === 'ArrowFunctionExpression' ); - return isMethod || isArrowFunction; + const isFunctionExpression = ( + node.type === 'ClassProperty' && + node.value.type === 'FunctionExpression' + ); + + return isMethod || isArrowFunction || isFunctionExpression; }; const checkMethods = node => { const properties = astUtil.getComponentProperties(node); diff --git a/tests/lib/rules/no-unused-class-component-methods.js b/tests/lib/rules/no-unused-class-component-methods.js index 9bee715f75..cb2c278b5a 100644 --- a/tests/lib/rules/no-unused-class-component-methods.js +++ b/tests/lib/rules/no-unused-class-component-methods.js @@ -228,6 +228,19 @@ ruleTester.run('no-unused-class-component-methods', rule, { } `, parser: 'babel-eslint' + }, + { + code: ` + class Foo extends React.Component { + action = function() { + console.log('error'); + } + render() { + return ; + } + } + `, + parser: 'babel-eslint' } ], @@ -352,6 +365,24 @@ ruleTester.run('no-unused-class-component-methods', rule, { line: 3, column: 11 }] + }, + { + code: ` + class Foo extends React.Component { + action = function() { + console.log('error'); + } + render() { + return null; + } + } + `, + parser: 'babel-eslint', + errors: [{ + message: 'Unused method "action" of class "Foo"', + line: 3, + column: 11 + }] } ] });