1.1 --- a/micropython/data.py Sat Nov 07 02:36:33 2009 +0100
1.2 +++ b/micropython/data.py Mon Nov 16 00:34:47 2009 +0100
1.3 @@ -286,11 +286,23 @@
1.4 return defs[name]
1.5
1.6 def _define_attribute_user(self, node):
1.7 +
1.8 + """
1.9 + Define 'node' as the user of attributes, indicating the point where the
1.10 + user is defined.
1.11 + """
1.12 +
1.13 name = node.name
1.14 + self._define_attribute_user_for_name(node, name)
1.15 +
1.16 + def _define_attribute_user_for_name(self, node, name):
1.17 defs = self.attributes_used[-1]
1.18 users = self.attribute_users[-1]
1.19 users[name] = node
1.20 - users[name]._attrnames = defs[name] = set()
1.21 + defs[name] = set()
1.22 + if not hasattr(node, "_attrnames"):
1.23 + node._attrnames = {}
1.24 + node._attrnames[name] = defs[name]
1.25
1.26 def _reset_all_attributes(self):
1.27 self.attributes_used[-1] = {}
1.28 @@ -945,7 +957,16 @@
1.29 # Initialise attribute usage.
1.30
1.31 for arg in argnames:
1.32 - self.attributes_used[-1][arg] = set()
1.33 +
1.34 + # Define attribute users.
1.35 +
1.36 + if node is not None:
1.37 + self._define_attribute_user_for_name(node, arg)
1.38 +
1.39 + # Or just record the usage.
1.40 +
1.41 + else:
1.42 + self.attributes_used[-1][arg] = set()
1.43
1.44 # Caches.
1.45