1.1 --- a/micropython/data.py Fri Oct 25 19:41:48 2013 +0200
1.2 +++ b/micropython/data.py Sat Oct 26 01:55:16 2013 +0200
1.3 @@ -184,25 +184,33 @@
1.4 module = self.module
1.5 builtins = module and module.builtins or None
1.6 importer = module and module.importer or None
1.7 + users = self.attribute_users[-1]
1.8
1.9 # Constants.
1.10
1.11 - if importer is not None and importer.predefined_constants.has_key(name):
1.12 + if importer and importer.predefined_constants.has_key(name):
1.13 return importer.get_predefined_constant(name), "constant", None
1.14
1.15 # Locals.
1.16
1.17 + elif not external and users.has_key(name):
1.18 + attr = Attr(None, self, name)
1.19 + for user in users[name]:
1.20 + if user._values and user._values.has_key(name):
1.21 + self._set_using_attr(attr, user._values[name])
1.22 + return attr, "local", self.full_name()
1.23 +
1.24 elif not external and self.has_key(name):
1.25 return self[name], "local", self.full_name()
1.26
1.27 # Globals.
1.28
1.29 - elif module is not None and module is not self and module.has_key(name):
1.30 + elif module and module is not self and module.has_key(name):
1.31 return module[name], "global", module.full_name()
1.32
1.33 # Builtins.
1.34
1.35 - elif builtins is not None and builtins.has_key(name):
1.36 + elif builtins and builtins.has_key(name):
1.37 return builtins[name], "builtins", builtins.full_name()
1.38
1.39 # Unknown.
1.40 @@ -266,7 +274,8 @@
1.41 if users.has_key(name):
1.42 for user in users[name]:
1.43 user._values = user._values or {}
1.44 - user._values[name] = attr_or_value
1.45 + userattr = user._values[name] = Attr(None, self, name)
1.46 + self._set_using_attr(userattr, attr_or_value, single_assignment)
1.47
1.48 # Update the attribute records.
1.49