diff options
author | Emile Anclin <emile.anclin@logilab.fr> | 2009-11-25 18:45:19 +0100 |
---|---|---|
committer | Emile Anclin <emile.anclin@logilab.fr> | 2009-11-25 18:45:19 +0100 |
commit | 61df5384faee1c38e4881a81a00183be6861ed6f (patch) | |
tree | 622dec29438dc1f942298ac694384fca0deb674e /rebuilder.py | |
parent | 6b59dfa123bb3cfb7474ba321f3ea813bf07e3c8 (diff) | |
download | astroid-git-61df5384faee1c38e4881a81a00183be6861ed6f.tar.gz |
moving stuff around to avoid circular imports
--HG--
branch : rebuild
Diffstat (limited to 'rebuilder.py')
-rw-r--r-- | rebuilder.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/rebuilder.py b/rebuilder.py index 90047215..b25f13c6 100644 --- a/rebuilder.py +++ b/rebuilder.py @@ -21,8 +21,9 @@ order to get a single ASTNG representation """ from logilab.astng import ASTNGBuildingException, InferenceError, NodeRemoved +from logilab.astng import _nodes from logilab.astng import nodes -from logilab.astng.utils import ASTVisitor +from logilab.astng.utils import ASTVisitor, REDIRECT from logilab.astng.infutils import YES, Instance @@ -38,8 +39,8 @@ class RebuildVisitor(ASTVisitor): self._metaclass = None self._global_names = None self._delayed = [] - self.rebuilder = nodes.TreeRebuilder(self) - self.set_line_info = nodes.AST_MODE == '_ast' + self.rebuilder = _nodes.TreeRebuilder(self) + self.set_line_info = _nodes.AST_MODE == '_ast' def _push(self, node): """update the stack and init some parts of the Function or Class node @@ -86,15 +87,19 @@ class RebuildVisitor(ASTVisitor): self.__asscontext = None def walk(self, node): - self._walk(node) + node = self._walk(node) delayed = self._delayed while delayed: dnode = delayed.pop(0) node_name = dnode.__class__.__name__.lower() self.delayed_visit_assattr(dnode) + return node def _walk(self, node, parent=None): """default visit method, handle the parent attribute""" + cls_name = node.__class__.__name__ + NGNode = getattr(nodes, REDIRECT.get(cls_name, cls_name)) + node = NGNode() node.parent = parent try: node.accept(self.rebuilder) @@ -114,7 +119,7 @@ class RebuildVisitor(ASTVisitor): if handle_leave: leave = getattr(self, "leave_" + node.__class__.__name__.lower()) leave(node) - + return node # general visit_<node> methods ############################################ |