summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2017-04-14 12:17:08 +0300
committerClaudiu Popa <pcmanticore@gmail.com>2017-04-14 12:18:43 +0300
commitfa10e72d7565fdaf85be7e6f66d8cf789f347600 (patch)
tree8278057ad9139635932bdf3b93aaabeb1d48b0b9
parent9d351aa1f27af2c6297a50b6bad0c31cff7375c3 (diff)
downloadpylint-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--ChangeLog10
-rw-r--r--pylint/checkers/exceptions.py4
-rw-r--r--pylint/test/functional/invalid_exceptions_raised.py8
3 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 49efd01ba..df282c7d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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