1.1 --- a/micropython/data.py Mon Jan 14 23:26:31 2013 +0100
1.2 +++ b/micropython/data.py Tue Jan 15 00:32:39 2013 +0100
1.3 @@ -1476,9 +1476,20 @@
1.4 if premade.has_key(name) and module.full_name() == "__builtins__":
1.5 cls = premade[name]
1.6 cls.set_context(parent, module, node)
1.7 - return cls
1.8 else:
1.9 - return Class(name, parent, module, node)
1.10 + # Where names are reused in a namespace, differentiate between classes
1.11 + # using a name index.
1.12 +
1.13 + if parent.has_key(name):
1.14 + name = "%s#%d" % (name, parent[name].assignments + 1)
1.15 +
1.16 + cls = Class(name, parent, module, node)
1.17 +
1.18 + # Add a reference for the class's "shadow" name.
1.19 +
1.20 + parent.use_specific_attribute(parent.full_name(), name)
1.21 +
1.22 + return cls
1.23
1.24 # Lambda sequence numbering.
1.25