1.1 --- a/simplify.py Sat Oct 28 00:20:33 2006 +0200
1.2 +++ b/simplify.py Sat Oct 28 00:22:32 2006 +0200
1.3 @@ -213,11 +213,20 @@
1.4 return result
1.5
1.6 def visitRaise(self, raise_):
1.7 - result = Raise(raise_, 1, expr=self.dispatch(raise_.expr1), traceback=None)
1.8 - if raise_.expr2 is not None:
1.9 - result.args = [self.dispatch(raise_.expr2)]
1.10 + result = Raise(raise_, 1)
1.11 + if raise_.expr2 is None:
1.12 + result.expr = self.dispatch(raise_.expr1)
1.13 + else:
1.14 + result.expr = InvokeFunction(
1.15 + expr=self.dispatch(raise_.expr1),
1.16 + args=[self.dispatch(raise_.expr2)],
1.17 + star=None,
1.18 + dstar=None
1.19 + )
1.20 if raise_.expr3 is not None:
1.21 result.traceback = self.dispatch(raise_.expr3)
1.22 + else:
1.23 + result.traceback = None
1.24 return result
1.25
1.26 def _visitBuiltin(self, builtin, name):
1.27 @@ -398,7 +407,7 @@
1.28 (else) -> ...
1.29 """
1.30
1.31 - subprogram = Subprogram(name=None, acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.32 + subprogram = Subprogram(name=None, internal=1, returns_value=1, params=[], star=None, dstar=None)
1.33 self.current_subprograms.append(subprogram)
1.34
1.35 # In the subprogram, make instructions which invoke a method on the
1.36 @@ -503,7 +512,7 @@
1.37 (else) -> ...
1.38 """
1.39
1.40 - subprogram = Subprogram(name=None, acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.41 + subprogram = Subprogram(name=None, internal=1, returns_value=1, params=[], star=None, dstar=None)
1.42 self.current_subprograms.append(subprogram)
1.43
1.44 # In the subprogram, make instructions which store each operand, test
1.45 @@ -563,7 +572,7 @@
1.46 (else) -> ...
1.47 """
1.48
1.49 - subprogram = Subprogram(name=None, acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.50 + subprogram = Subprogram(name=None, internal=1, returns_value=1, params=[], star=None, dstar=None)
1.51 self.current_subprograms.append(subprogram)
1.52
1.53 # In the subprogram, make instructions which store each operand, test
1.54 @@ -1030,6 +1039,7 @@
1.55 expr=LoadRef(ref=structure)
1.56 ),
1.57 InvokeBlock(
1.58 + share_locals=0,
1.59 expr=LoadRef(ref=subprogram)
1.60 )
1.61 ]
1.62 @@ -1106,7 +1116,7 @@
1.63 (dstar)
1.64 """
1.65
1.66 - subprogram = Subprogram(name=function.name, acquire_locals=0, returns_value=1, star=None, dstar=None)
1.67 + subprogram = Subprogram(name=function.name, internal=0, returns_value=1, star=None, dstar=None)
1.68 self.current_subprograms.append(subprogram)
1.69 subprogram.code = self.dispatch(function.code) + [Return()]
1.70 self.current_subprograms.pop()
1.71 @@ -1122,7 +1132,7 @@
1.72 # Make a subprogram for the function and record it outside the main
1.73 # tree.
1.74
1.75 - subprogram = Subprogram(name=None, acquire_locals=0, returns_value=1, star=None, dstar=None)
1.76 + subprogram = Subprogram(name=None, internal=0, returns_value=1, star=None, dstar=None)
1.77 self.current_subprograms.append(subprogram)
1.78 subprogram.code = [Return(expr=self.dispatch(lambda_.code))]
1.79 self.current_subprograms.pop()
1.80 @@ -1157,7 +1167,7 @@
1.81 (else) -> ...
1.82 """
1.83
1.84 - subprogram = Subprogram(name=None, acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.85 + subprogram = Subprogram(name=None, internal=1, returns_value=0, params=[], star=None, dstar=None)
1.86 self.current_subprograms.append(subprogram)
1.87
1.88 # Include a conditional statement in the subprogram.
1.89 @@ -1213,7 +1223,7 @@
1.90 (else) -> ...
1.91 """
1.92
1.93 - subprogram = Subprogram(name=None, acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.94 + subprogram = Subprogram(name=None, internal=1, returns_value=0, params=[], star=None, dstar=None)
1.95 self.current_subprograms.append(subprogram)
1.96
1.97 # Always return from conditional sections/subprograms.
1.98 @@ -1246,8 +1256,9 @@
1.99 # Inside the conditional, add a recursive invocation to the subprogram
1.100 # if the test condition was satisfied.
1.101
1.102 - continuation = InvokeBlock()
1.103 - continuation.expr = LoadRef(ref=subprogram)
1.104 + continuation = InvokeBlock(
1.105 + expr=LoadRef(ref=subprogram)
1.106 + )
1.107 try_except.body = [assign] + self.dispatch(for_.body) + [continuation]
1.108 subprogram.code = [try_except, Return()]
1.109