summaryrefslogtreecommitdiff
path: root/rebuilder.py
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2009-11-25 18:45:19 +0100
committerEmile Anclin <emile.anclin@logilab.fr>2009-11-25 18:45:19 +0100
commit61df5384faee1c38e4881a81a00183be6861ed6f (patch)
tree622dec29438dc1f942298ac694384fca0deb674e /rebuilder.py
parent6b59dfa123bb3cfb7474ba321f3ea813bf07e3c8 (diff)
downloadastroid-git-61df5384faee1c38e4881a81a00183be6861ed6f.tar.gz
moving stuff around to avoid circular imports
--HG-- branch : rebuild
Diffstat (limited to 'rebuilder.py')
-rw-r--r--rebuilder.py15
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 ############################################