- AST parsing fixes: fixed TryExcept identifier parsing
diff --git a/CHANGES b/CHANGES index 668e153..de2a311 100644 --- a/CHANGES +++ b/CHANGES
@@ -1,3 +1,6 @@ +0.1.1 +- AST parsing fixes: fixed TryExcept identifier parsing + 0.1.0 Initial release.
diff --git a/lib/mako/ast.py b/lib/mako/ast.py index e44e5a8..05f5426 100644 --- a/lib/mako/ast.py +++ b/lib/mako/ast.py
@@ -64,6 +64,8 @@ if decl is not None: (exception, ident) = [n.name for n in decl.nodes] self.declared_identifiers.add(ident) + for n in node.getChildNodes(): + s.visit(n, *args) def visitName(s, node, *args): if node.name not in __builtins__ and node.name not in self.declared_identifiers: self.undeclared_identifiers.add(node.name)
diff --git a/test/ast.py b/test/ast.py index 3059fdd..87c4600 100644 --- a/test/ast.py +++ b/test/ast.py
@@ -67,6 +67,16 @@ parsed = ast.PythonCode(code, 0, 0, None) assert parsed.undeclared_identifiers == util.Set(['y']) assert parsed.declared_identifiers == util.Set(['mydef', 'x']) + + def test_locate_identifiers_5(self): + code = """ +try: + print x +except: + print y +""" + parsed = ast.PythonCode(code, 0, 0, None) + assert parsed.undeclared_identifiers == util.Set(['x', 'y']) def test_no_global_imports(self): code = """