From cb40c32ac6af748d5afa79838a6807dd0a8d6bb0 Mon Sep 17 00:00:00 2001 From: Chiawen Chen Date: Sun, 8 Mar 2020 18:39:06 +0800 Subject: [PATCH] [Fix] `no-unused-state`: handle optional chaining Fixes #2515 --- lib/rules/no-unused-state.js | 2 +- tests/lib/rules/no-unused-state.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-unused-state.js b/lib/rules/no-unused-state.js index 05bc08b29a..e05ef73cd4 100644 --- a/lib/rules/no-unused-state.js +++ b/lib/rules/no-unused-state.js @@ -415,7 +415,7 @@ module.exports = { handleAssignment(node.id, node.init); }, - MemberExpression(node) { + 'MemberExpression, OptionalMemberExpression'(node) { if (!classInfo) { return; } diff --git a/tests/lib/rules/no-unused-state.js b/tests/lib/rules/no-unused-state.js index f6ded949bd..2ad25901a3 100644 --- a/tests/lib/rules/no-unused-state.js +++ b/tests/lib/rules/no-unused-state.js @@ -231,6 +231,28 @@ eslintTester.run('no-unused-state', rule, { } }`, parser: parsers.BABEL_ESLINT + }, { + code: ` + class OptionalChaining extends React.Component { + constructor() { + this.state = { foo: 0 }; + } + render() { + return ; + } + }`, + parser: parsers['@TYPESCRIPT_ESLINT'] + }, { + code: ` + class OptionalChaining extends React.Component { + constructor() { + this.state = { foo: 0 }; + } + render() { + return ; + } + }`, + parser: parsers.BABEL_ESLINT }, `class VariableDeclarationTest extends React.Component { constructor() {