diff options
| author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2008-07-23 12:41:23 +0200 |
|---|---|---|
| committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2008-07-23 12:41:23 +0200 |
| commit | 878a5e61470f5ba3cdafa00e0a2a22a49122de22 (patch) | |
| tree | 1b5ac0669c00ab94600a76ce821fae2e2a9ab237 /builder.py | |
| parent | 8fee5a129ed320346cce0f2a522ee20792e4c852 (diff) | |
| download | astroid-git-878a5e61470f5ba3cdafa00e0a2a22a49122de22.tar.gz | |
more fixes, Getattr support, unary operation inference support
--HG--
branch : _ast_compat
Diffstat (limited to 'builder.py')
| -rw-r--r-- | builder.py | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -138,7 +138,6 @@ class ASTNGBuilder: def ast_build(self, node, modname=None, path=None): """recurse on the ast (soon ng) to add some arguments et method""" - nodes.repr_tree(node) if path is not None: node.file = node.path = abspath(path) else: @@ -159,6 +158,7 @@ class ASTNGBuilder: while self._delayed: dnode = self._delayed.pop(0) getattr(self, 'delayed_visit_%s' % dnode.__class__.__name__.lower())(dnode) + nodes.repr_tree(node) return node # callbacks to build from an existing compiler.ast tree ################### @@ -224,15 +224,15 @@ class ASTNGBuilder: self._add_local(node, node.node.name) def visit_binop(self, node): - node.visit_default(node) + self.visit_default(node) nodes.init_binop(node) def visit_boolop(self, node): - node.visit_default(node) + self.visit_default(node) nodes.init_boolop(node) def visit_compare(self, node): - node.visit_default(node) + self.visit_default(node) nodes.init_compare(node) def visit_discard(self, node): @@ -247,6 +247,10 @@ class ASTNGBuilder: self.visit_default(node) nodes.init_exec(node) + def visit_getattr(self, node): + self.visit_default(node) + nodes.init_getattr(node) + def visit_import(self, node): """visit a Import node -> add imported names to locals""" self.visit_default(node) @@ -289,7 +293,6 @@ class ASTNGBuilder: """visit a Module node -> init node and push the corresponding object or None on the top of the stack """ - self._stack = [self._module] self._par_stack = [node] self._metaclass = [''] @@ -348,7 +351,7 @@ class ASTNGBuilder: nodes.init_tuple(node) def visit_unaryop(self, node): - node.visit_default(node) + self.visit_default(node) nodes.init_unaryop(node) def visit_while(self, node): @@ -365,7 +368,6 @@ class ASTNGBuilder: """ self.visit_default(node) node.instance_attrs = {} - node.basenames = [bnode.as_string() for bnode in node.bases] self._push(node) nodes.init_class(node) for name, value in ( ('__name__', node.name), @@ -387,6 +389,7 @@ class ASTNGBuilder: # no base classes, detect new / style old style according to # current scope node._newstyle = metaclass == 'type' + node.basenames = [bnode.as_string() for bnode in node.bases] leave_classdef = leave_class def visit_function(self, node): |
