diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2017-04-14 12:17:08 +0300 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2017-04-14 12:18:43 +0300 |
commit | fa10e72d7565fdaf85be7e6f66d8cf789f347600 (patch) | |
tree | 8278057ad9139635932bdf3b93aaabeb1d48b0b9 | |
parent | 9d351aa1f27af2c6297a50b6bad0c31cff7375c3 (diff) | |
download | pylint-git-fa10e72d7565fdaf85be7e6f66d8cf789f347600.tar.gz |
Exceptions have a different type since astroid 1.5.0, use a visit_exceptioninstance method for them. Close #1419
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | pylint/checkers/exceptions.py | 4 | ||||
-rw-r--r-- | pylint/test/functional/invalid_exceptions_raised.py | 8 |
3 files changed, 22 insertions, 0 deletions
@@ -2,6 +2,16 @@ Pylint's ChangeLog ------------------ +What's New in Pylint 1.7.1? +========================= + +Release date: |TBA| + + * Fix a false positive which occurred when an exception was reraised + + Close #1419 + + What's New in Pylint 1.7? ========================= diff --git a/pylint/checkers/exceptions.py b/pylint/checkers/exceptions.py index f2de8568e..dde3ae623 100644 --- a/pylint/checkers/exceptions.py +++ b/pylint/checkers/exceptions.py @@ -160,6 +160,9 @@ class ExceptionRaiseLeafVisitor(BaseVisitor): cls = instance._proxied self.visit_classdef(cls) + # Exception instances have a particular class type + visit_exceptioninstance = visit_instance + def visit_classdef(self, cls): if (not utils.inherit_from_std_ex(cls) and utils.has_known_bases(cls)): @@ -239,6 +242,7 @@ class ExceptionsChecker(checkers.BaseChecker): inferred_value = None ExceptionRaiseRefVisitor(self, node).visit(expr) + if inferred_value: ExceptionRaiseLeafVisitor(self, node).visit(inferred_value) diff --git a/pylint/test/functional/invalid_exceptions_raised.py b/pylint/test/functional/invalid_exceptions_raised.py index 118d39819..aa3d0845c 100644 --- a/pylint/test/functional/invalid_exceptions_raised.py +++ b/pylint/test/functional/invalid_exceptions_raised.py @@ -81,3 +81,11 @@ def unknown_bases(): class MyException(bala): pass raise MyException + + +def exception_instance_regression(): + """Exceptions have a particular class type""" + try: + int("9a") + except ValueError as exc: + raise exc |