# HG changeset patch # User paulb@localhost.localdomain # Date 1182724376 -7200 # Node ID 1d181dc3a6a35aaa1b34ed18387051dfcfef27d0 # Parent 65bcf80d443255c4d200f95c04bb4b428352aa1d Added a __name__ definition in each module. diff -r 65bcf80d4432 -r 1d181dc3a6a3 simplify/ast.py --- a/simplify/ast.py Sun Jun 24 21:55:51 2007 +0200 +++ b/simplify/ast.py Mon Jun 25 00:32:56 2007 +0200 @@ -125,7 +125,21 @@ """ result = self.module = Module(module, 1, name=name) - result.code = self.dispatch(module.node) + result.code = [] + + # Add an initialiser for the module name first for non-builtins. + + if self.builtins: + result.code += self.dispatch(module.node) + + result.code += [ + StoreName(name="__name__", expr=self._visitConst(None, name)) + ] + + # Add an initialiser for the module name last for builtins. + + if not self.builtins: + result.code += self.dispatch(module.node) return result # Node transformations. @@ -767,10 +781,16 @@ return result def visitConst(self, const): - key = "%s-%s" % (const.value.__class__.__name__, const.value) + return self._visitConst(const, const.value) + + def _visitConst(self, node, value): + key = "%s-%s" % (value.__class__.__name__, value) if not self.constants.has_key(key): - self.constants[key] = Constant(name=repr(const.value), value=const.value) - result = InvokeFunction(const, 1, expr=LoadName(name=self.constants[key].typename)) + self.constants[key] = Constant(name=repr(value), value=value) + if node is not None: + result = InvokeFunction(node, 1, expr=LoadName(name=self.constants[key].typename)) + else: + result = InvokeFunction(expr=LoadName(name=self.constants[key].typename)) return result def visitContinue(self, continue_):