diff --git a/flake8/pyflakes.py b/flake8/pyflakes.py index c83d210..dfdef9e 100644 --- a/flake8/pyflakes.py +++ b/flake8/pyflakes.py @@ -332,7 +332,8 @@ class Checker(object): COMPREHENSION = KEYWORD = handleChildren def EXCEPTHANDLER(self, node): - self.scope[node.name] = node + if node.name is not None: + self.addBinding(node.lineno, FunctionDefinition(node.name, node)) def addBinding(self, lineno, value, reportRedef=True): '''Called when a binding is altered. @@ -567,10 +568,15 @@ class Checker(object): Check to see if any assignments have not been used. """ for name, binding in self.scope.items(): - if (not binding.used and not name in self.scope.globals + try: + if (not binding.used and not name in self.scope.globals and isinstance(binding, Assignment)): - self.report(messages.UnusedVariable, + self.report(messages.UnusedVariable, binding.source.lineno, name) + except: + raise Exception(binding) + import pdb; pdb.set_trace() + self.deferAssignment(checkUnusedAssignments) self.popScope() diff --git a/flake8/tests/test_flakes.py b/flake8/tests/test_flakes.py index 815e61e..cb99546 100644 --- a/flake8/tests/test_flakes.py +++ b/flake8/tests/test_flakes.py @@ -9,9 +9,22 @@ except ValueError as err: print(err) """ +code2 = """ +try: + pass +except ValueError: + print(err) + +try: + pass +except ValueError: + print(err) +""" + class TestFlake(TestCase): def test_exception(self): - warnings = check(code) - self.assertEqual(warnings, 0) + for c in (code, code2): + warnings = check(code) + self.assertEqual(warnings, 0)