From 2c9d58563aa8268cdcb2ffa3e72d0776b3cf01ee Mon Sep 17 00:00:00 2001 From: Zen Lee <53538590+zenlyj@users.noreply.github.com> Date: Mon, 15 May 2023 20:35:33 +0800 Subject: Regression fix for `unused-variable` false negative (#8684) --- pylint/checkers/variables.py | 6 ++++++ tests/functional/u/unused/unused_variable.py | 17 +++++++++++++++++ tests/functional/u/unused/unused_variable.txt | 1 + 3 files changed, 24 insertions(+) diff --git a/pylint/checkers/variables.py b/pylint/checkers/variables.py index 2504c0c84..2bd553fa1 100644 --- a/pylint/checkers/variables.py +++ b/pylint/checkers/variables.py @@ -950,6 +950,12 @@ scope_type : {self._atomic.scope_type} return True if isinstance(node, (nodes.ClassDef, nodes.FunctionDef)) and node.name == name: return True + if ( + isinstance(node, nodes.ExceptHandler) + and node.name + and node.name.name == name + ): + return True return False @staticmethod diff --git a/tests/functional/u/unused/unused_variable.py b/tests/functional/u/unused/unused_variable.py index 9dabe5b59..f15ae7557 100644 --- a/tests/functional/u/unused/unused_variable.py +++ b/tests/functional/u/unused/unused_variable.py @@ -199,3 +199,20 @@ def func6(): nonlocal_writer() assert a == 9, a + +def test_regression_8595(): + # pylint: disable=broad-exception-caught + import logging + def compute(): + pass + try: + compute() + error = False + except Exception as e: + logging.error(e) + error = True + if error: + try: + compute() + except Exception as e: # [unused-variable] + pass diff --git a/tests/functional/u/unused/unused_variable.txt b/tests/functional/u/unused/unused_variable.txt index 19983d536..609ce9fef 100644 --- a/tests/functional/u/unused/unused_variable.txt +++ b/tests/functional/u/unused/unused_variable.txt @@ -26,3 +26,4 @@ unused-variable:150:4:154:26:func4:Unused variable 'error':UNDEFINED redefined-outer-name:153:8:154:26:func4:Redefining name 'error' from outer scope (line 150):UNDEFINED unused-variable:161:4:162:12:main:Unused variable 'e':UNDEFINED undefined-loop-variable:168:10:168:11:main:Using possibly undefined loop variable 'e':UNDEFINED +unused-variable:217:8:218:16:test_regression_8595:Unused variable 'e':UNDEFINED -- cgit v1.2.1