# HG changeset patch # User paulb@jeremy # Date 1153087835 -7200 # Node ID af353c35b70b40e96620b400992e7f40d3a880d5 # Parent fd231fc3d4aedfdbbd45df667a8458920cf63015 Made function subprogram names originate from the AST nodes which defined them. Introduced proper class definition subprograms, along with separate structure nodes. diff -r fd231fc3d4ae -r af353c35b70b simplified.py --- a/simplified.py Sun Jul 16 01:33:02 2006 +0200 +++ b/simplified.py Mon Jul 17 00:10:35 2006 +0200 @@ -87,6 +87,8 @@ self._pprint(indent + 2, "( ", "%s -> %s" % (name, default)) if getattr(self, "acquire_locals", 0): self._pprint(indent + 2, "( ", "acquiring locals") + if getattr(self, "structure", 0): + self._pprint(indent + 2, "( ", "structure '%s'" % self.structure.name) if hasattr(self, "test"): self.test.pprint(indent + 2, "? ") for attr in "code", "body", "else_", "finally_": diff -r fd231fc3d4ae -r af353c35b70b simplify.py --- a/simplify.py Sun Jul 16 01:33:02 2006 +0200 +++ b/simplify.py Mon Jul 17 00:10:35 2006 +0200 @@ -88,8 +88,23 @@ return self.result def visitClass(self, class_): - result = Class(class_, name=class_.name, bases=class_.bases) - result.code = self.dispatch(class_.code) + structure = Class(name=hex(id(class_)), bases=class_.bases) + + subprogram = Subprogram(name=hex(id(class_)), acquire_locals=1, structure=structure, params=[], star=None, dstar=None) + self.current_subprograms.append(subprogram) + + subprogram.code = self.dispatch(class_.code) + + self.current_subprograms.pop() + self.subprograms.append(subprogram) + + # Make a definition of the class associating it with a name. + + result = Assign(class_) + init = Invoke(expr=LoadRef(ref=subprogram), args=[], star=None, dstar=None) + load = LoadRef(ref=structure) + store = StoreName(name=class_.name) + result.code = [init, load, store] return result def visitGetattr(self, getattr): @@ -608,7 +623,7 @@ # Make a subprogram for the function and record it outside the main # tree. - subprogram = Subprogram(name=function.name, returns_value=1, star=None, dstar=None) + subprogram = Subprogram(name=hex(id(function)), returns_value=1, star=None, dstar=None) self.current_subprograms.append(subprogram) subprogram.code = self.dispatch(function.code) self.current_subprograms.pop()