1.1 --- a/annotate.py Sun Nov 26 21:28:11 2006 +0100
1.2 +++ b/annotate.py Mon Nov 27 01:06:38 2006 +0100
1.3 @@ -361,7 +361,6 @@
1.4 choice_types += self.namespace.types
1.5 for expr_type in expr_types:
1.6 if expr_type.type.get_class() not in choice_types:
1.7 - print "CheckExc", expr_type, "should be revoked!"
1.8 self._prune_non_accesses(checkexc.expr, expr_type)
1.9 return checkexc
1.10
1.11 @@ -686,7 +685,7 @@
1.12
1.13 if getattr(invoke, "share_locals", 0):
1.14 namespace = Namespace()
1.15 - namespace.merge_namespace(self.namespace, no_return_locals=1)
1.16 + namespace.merge_namespace(self.namespace, everything=0)
1.17 using_module_namespace = self.namespace is self.module.namespace
1.18 elif getattr(target, "structure", None):
1.19 namespace = Namespace()
1.20 @@ -720,7 +719,7 @@
1.21 if getattr(invoke, "share_locals", 0):
1.22 self.namespace.reset()
1.23 for locals in self.returned_locals:
1.24 - self.namespace.merge_namespace(locals, no_return_locals=1)
1.25 + self.namespace.merge_namespace(locals, everything=0)
1.26
1.27 # Incorporate any raised exceptions.
1.28
1.29 @@ -970,14 +969,17 @@
1.30 def revoke_exception_type(self, type):
1.31 self.raises.remove(type)
1.32
1.33 - def merge_namespace(self, namespace, no_return_locals=0):
1.34 + def merge_namespace(self, namespace, everything=1):
1.35 self.merge_items(namespace.names.items())
1.36 - combine(self.returns, namespace.returns)
1.37 - if not no_return_locals:
1.38 + if everything:
1.39 + combine(self.returns, namespace.returns)
1.40 combine(self.return_locals, namespace.return_locals)
1.41 combine(self.raises, namespace.raises)
1.42 - self.temp = {}
1.43 - self.temp.update(namespace.temp)
1.44 + for name, values in namespace.temp.items():
1.45 + if values:
1.46 + if not self.temp.has_key(name) or not self.temp[name]:
1.47 + self.temp[name] = [[]]
1.48 + combine(self.temp[name][-1], values[-1])
1.49
1.50 def merge_items(self, items):
1.51 for name, types in items: