1.1 --- a/micropython/data.py Sun Oct 13 15:45:26 2013 +0200
1.2 +++ b/micropython/data.py Sun Oct 13 18:40:30 2013 +0200
1.3 @@ -365,6 +365,10 @@
1.4
1.5 self.assignments = None
1.6
1.7 + # Number of static "class" or "def" assignments per name.
1.8 +
1.9 + self.static_assignments = 0
1.10 +
1.11 # Value-related methods.
1.12
1.13 def get_contexts(self):
1.14 @@ -1474,7 +1478,9 @@
1.15 original_name = name
1.16
1.17 if parent.has_key(name):
1.18 - name = "%s#%d" % (name, parent[name].assignments + 1)
1.19 + assignments = parent[name].static_assignments
1.20 + if assignments > 1:
1.21 + name = "%s#%d" % (name, assignments + 1)
1.22
1.23 cls = Class(name, parent, module, node, original_name)
1.24
1.25 @@ -1497,15 +1503,9 @@
1.26 original_name = name
1.27
1.28 if parent.has_key(name):
1.29 - # NOTE: Handle AtLeast(n) situations, such as in cases where modules
1.30 - # NOTE: may mutate others (doctest "monkeypatching" linecache, for
1.31 - # NOTE: example).
1.32 - # NOTE: Should probably have a separate attribute tracking actual
1.33 - # NOTE: declarations rather than use the assignments attribute.
1.34 - assignments = parent[name].assignments
1.35 - if isinstance(assignments, AtLeast):
1.36 - assignments = assignments.count
1.37 - name = "%s#%d" % (name, assignments + 1)
1.38 + assignments = parent[name].static_assignments
1.39 + if assignments > 1:
1.40 + name = "%s#%d" % (name, assignments + 1)
1.41
1.42 fn = Function(name, parent, argnames, defaults, has_star, has_dstar,
1.43 dynamic_def, module, node, original_name)