1.1 --- a/annotate.py Sat Dec 02 00:23:46 2006 +0100
1.2 +++ b/annotate.py Sat Dec 02 01:28:16 2006 +0100
1.3 @@ -499,7 +499,7 @@
1.4 if not attr in non_writes:
1.5 non_writes.append(attr)
1.6 continue
1.7 - attr.type.namespace.store(storeattr.name, expr)
1.8 + attr.type.namespace.add(storeattr.name, expr)
1.9 writes[attr.type] = attr.type.namespace.load(storeattr.name)
1.10 if not writes:
1.11 print "Unable to store attribute", storeattr.name, "given", self.namespace.types
1.12 @@ -802,7 +802,10 @@
1.13 param, default = params[0]
1.14 if arg is None:
1.15 arg = default
1.16 - items.append((param, arg.types))
1.17 + if hasattr(arg, "types"):
1.18 + items.append((param, arg.types))
1.19 + else:
1.20 + items.append((param, [])) # Annotation has not succeeded.
1.21 params = params[1:]
1.22 else:
1.23 star_args.append(arg)
1.24 @@ -818,7 +821,10 @@
1.25 arg = self.dispatch(default)
1.26 else:
1.27 raise AnnotationMessage, "No argument supplied in '%s' for parameter '%s'." % (subprogram, param)
1.28 - items.append((param, arg.types))
1.29 + if hasattr(arg, "types"):
1.30 + items.append((param, arg.types))
1.31 + else:
1.32 + items.append((param, [])) # Annotation has not succeeded.
1.33 params = params[1:]
1.34
1.35 dstar_args = kw_args.values()
1.36 @@ -971,6 +977,12 @@
1.37 def set_types(self, types):
1.38 self.types = types
1.39
1.40 + def add(self, name, types):
1.41 + if self.names.has_key(name):
1.42 + combine(self.names[name], types)
1.43 + else:
1.44 + self.store(name, types)
1.45 +
1.46 def store(self, name, types):
1.47 self.names[name] = types
1.48