summaryrefslogtreecommitdiff
path: root/builder.py
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2010-03-17 12:56:04 +0100
committerEmile Anclin <emile.anclin@logilab.fr>2010-03-17 12:56:04 +0100
commit3d4d3d6c8cbe6c66098072e65766d3074905e417 (patch)
tree83ffd627687d650816683daaa121742ac6915652 /builder.py
parent8dd1cf970642481d52a97528cc0757da9b07b56c (diff)
downloadastroid-git-3d4d3d6c8cbe6c66098072e65766d3074905e417.tar.gz
refactor cache handling to avoid infinite recursion error while infering assignments during build, which potentially tried to rebuild a module we were currently building
--HG-- branch : rebuild
Diffstat (limited to 'builder.py')
-rw-r--r--builder.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/builder.py b/builder.py
index 64844804..6df3657f 100644
--- a/builder.py
+++ b/builder.py
@@ -62,7 +62,7 @@ class ASTNGBuilder:
self._module = None
self._file = None
self._done = None
- self.rebuilder = TreeRebuilder()
+ self.rebuilder = TreeRebuilder(manager)
self._dyn_modname_map = {'gtk': 'gtk._gtk'}
def module_build(self, module, modname=None):
@@ -87,10 +87,12 @@ class ASTNGBuilder:
because it's a built-in module or because the .py is not available)
"""
self._module = module
- node = build_module(modname or module.__name__, module.__doc__)
+ if modname is None:
+ modname = module.__name__
+ node = build_module(modname, module.__doc__)
node.file = node.path = path and abspath(path) or path
if self._manager is not None:
- self._manager._cache[node.file] = self._manager._cache[node.name] = node
+ self._manager._cache[modname] = node
node.package = hasattr(module, '__path__')
self._done = {}
self.object_build(node, module)
@@ -144,11 +146,6 @@ class ASTNGBuilder:
newnode.pure_python = True
newnode.package = package
newnode.file = newnode.path = node_file
- newnode.name = modname
- if self._manager is not None:
- self._manager._cache[newnode.file] = newnode
- if self._file:
- self._manager._cache[abspath(self._file)] = newnode
return newnode
# astng from living objects ###############################################