1.1 --- a/simplified.py Sun Jul 16 01:33:02 2006 +0200
1.2 +++ b/simplified.py Mon Jul 17 00:10:35 2006 +0200
1.3 @@ -87,6 +87,8 @@
1.4 self._pprint(indent + 2, "( ", "%s -> %s" % (name, default))
1.5 if getattr(self, "acquire_locals", 0):
1.6 self._pprint(indent + 2, "( ", "acquiring locals")
1.7 + if getattr(self, "structure", 0):
1.8 + self._pprint(indent + 2, "( ", "structure '%s'" % self.structure.name)
1.9 if hasattr(self, "test"):
1.10 self.test.pprint(indent + 2, "? ")
1.11 for attr in "code", "body", "else_", "finally_":
2.1 --- a/simplify.py Sun Jul 16 01:33:02 2006 +0200
2.2 +++ b/simplify.py Mon Jul 17 00:10:35 2006 +0200
2.3 @@ -88,8 +88,23 @@
2.4 return self.result
2.5
2.6 def visitClass(self, class_):
2.7 - result = Class(class_, name=class_.name, bases=class_.bases)
2.8 - result.code = self.dispatch(class_.code)
2.9 + structure = Class(name=hex(id(class_)), bases=class_.bases)
2.10 +
2.11 + subprogram = Subprogram(name=hex(id(class_)), acquire_locals=1, structure=structure, params=[], star=None, dstar=None)
2.12 + self.current_subprograms.append(subprogram)
2.13 +
2.14 + subprogram.code = self.dispatch(class_.code)
2.15 +
2.16 + self.current_subprograms.pop()
2.17 + self.subprograms.append(subprogram)
2.18 +
2.19 + # Make a definition of the class associating it with a name.
2.20 +
2.21 + result = Assign(class_)
2.22 + init = Invoke(expr=LoadRef(ref=subprogram), args=[], star=None, dstar=None)
2.23 + load = LoadRef(ref=structure)
2.24 + store = StoreName(name=class_.name)
2.25 + result.code = [init, load, store]
2.26 return result
2.27
2.28 def visitGetattr(self, getattr):
2.29 @@ -608,7 +623,7 @@
2.30 # Make a subprogram for the function and record it outside the main
2.31 # tree.
2.32
2.33 - subprogram = Subprogram(name=function.name, returns_value=1, star=None, dstar=None)
2.34 + subprogram = Subprogram(name=hex(id(function)), returns_value=1, star=None, dstar=None)
2.35 self.current_subprograms.append(subprogram)
2.36 subprogram.code = self.dispatch(function.code)
2.37 self.current_subprograms.pop()