# HG changeset patch # User Paul Boddie # Date 1218934661 -7200 # Node ID 616789e96a4b1bd381d5e99b57d67881b52e8979 # Parent f89d98f99ab1cdb30424343006d156b97f973a71 Changed context definition when storing attributes in order to better support the run-time model. diff -r f89d98f99ab1 -r 616789e96a4b micropython/data.py --- a/micropython/data.py Sun Aug 17 02:16:35 2008 +0200 +++ b/micropython/data.py Sun Aug 17 02:57:41 2008 +0200 @@ -86,7 +86,7 @@ self.global_namespace.set(name, value, 0) else: attr = self._set(name, value) - attr.update(value, single_assignment) + attr.update(attr.value, single_assignment) def set_module(self, name, value): @@ -100,7 +100,7 @@ attr = self._set(name, value) if attr.assignments is None: attr.assignments = 1 - attr.assignment_values.add(value) + attr.assignment_values.add(attr.value) def _set(self, name, value): @@ -108,7 +108,16 @@ if not self.namespace.has_key(name): - # Attempt to fix the context. + # Either accept the attribute as specified. + + if isinstance(value, Attr): + if value.context is not None: + self.namespace[name] = Attr(None, self, value.context, name, value.value) + return self.namespace[name] + else: + value = value.value + + # Or attempt to fix the context. context = self._context(value) self.namespace[name] = Attr(None, self, context, name, value) @@ -123,10 +132,7 @@ NOTE: since only instance contexts have significant effects at run-time. """ - if value is not None: - return value.parent - else: - return None + return None def __delitem__(self, name): del self.namespace[name] diff -r f89d98f99ab1 -r 616789e96a4b micropython/inspect.py --- a/micropython/inspect.py Sun Aug 17 02:16:35 2008 +0200 +++ b/micropython/inspect.py Sun Aug 17 02:57:41 2008 +0200 @@ -334,10 +334,7 @@ return None def visitAssName(self, node): - if isinstance(self.expr, Attr): - self.store(node.name, self.expr.value) - else: - self.store(node.name, self.expr) + self.store(node.name, self.expr) return None visitAssTuple = visitAssList