# HG changeset patch # User Sylvain Thénault <sylvain.thenault@logilab.fr> # Date 1270641097 -7200 # Wed Apr 07 13:51:37 2010 +0200 # Node ID 9f9c98a219a538d77f718e3e45108611bc7e0ede # Parent 60255eecf96cb50faad89082414f17b4b4323ad5 #759035: Automate addition of eid cachekey in RQL analysis diff --git a/__init__.py b/__init__.py --- a/__init__.py +++ b/__init__.py @@ -93,8 +93,8 @@ """ self._analyser_lock.acquire() try: - self._analyser.visit(rqlst, uid_func_mapping, kwargs, - debug) + return self._analyser.visit(rqlst, uid_func_mapping, kwargs, + debug) finally: self._analyser_lock.release() diff --git a/analyze.py b/analyze.py --- a/analyze.py +++ b/analyze.py @@ -340,9 +340,10 @@ assert cst.type if cst.type == 'Substitute': eid = self.kwargs[cst.value] + self.deambiguifiers.add(cst.value) else: eid = cst.value - cst.uidtype = self.uid_func(eid) + cst.uidtype = self.uid_func(cst.eval(self.kwargs)) types.add(cst.uidtype) return types @@ -373,10 +374,12 @@ self.uid_func_mapping = uid_func_mapping self.uid_func = uid_func_mapping.values()[0] self.kwargs = kwargs + self.deambiguifiers = set() self._visit(node) if uid_func_mapping is not None: self.uid_func_mapping = None self.uid_func = None + return self.deambiguifiers def visit_union(self, node): for select in node.children: