fixed inheritance for exception checks

This commit is contained in:
Dave Halter
2014-06-23 13:01:12 +02:00
parent c1181a0459
commit 393833059a
2 changed files with 10 additions and 1 deletions

View File

@@ -85,7 +85,10 @@ def add(evaluator, name, jedi_obj, message=None, typ=Error, payload=None):
def _check_for_exception_catch(evaluator, jedi_obj, exception, payload=None): def _check_for_exception_catch(evaluator, jedi_obj, exception, payload=None):
"""Returns True if the exception was catched.""" """Returns True if the exception was catched."""
def check_match(cls): def check_match(cls):
return isinstance(cls, CompiledObject) and cls.obj == exception try:
return isinstance(cls, CompiledObject) and issubclass(exception, cls.obj)
except TypeError:
return False
def check_try_for_except(obj): def check_try_for_except(obj):
while obj.next is not None: while obj.next is not None:
@@ -94,6 +97,7 @@ def _check_for_exception_catch(evaluator, jedi_obj, exception, payload=None):
# No import implies a `except:` catch, which catches # No import implies a `except:` catch, which catches
# everything. # everything.
return True return True
for i in obj.inputs: for i in obj.inputs:
except_classes = evaluator.eval_statement(i) except_classes = evaluator.eval_statement(i)
for cls in except_classes: for cls in except_classes:

View File

@@ -61,6 +61,11 @@ except Undefined:
# inheritance # inheritance
# ----------------- # -----------------
try:
undefined
except Exception:
pass
# should catch everything # should catch everything
try: try:
undefined undefined