diff options
author | Emile Anclin <emile.anclin@logilab.fr> | 2010-03-17 12:56:04 +0100 |
---|---|---|
committer | Emile Anclin <emile.anclin@logilab.fr> | 2010-03-17 12:56:04 +0100 |
commit | 3d4d3d6c8cbe6c66098072e65766d3074905e417 (patch) | |
tree | 83ffd627687d650816683daaa121742ac6915652 /builder.py | |
parent | 8dd1cf970642481d52a97528cc0757da9b07b56c (diff) | |
download | astroid-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.py | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -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 ############################################### |