1.1 --- a/common.py Mon May 27 11:54:56 2019 +0200
1.2 +++ b/common.py Sun Jun 02 23:10:26 2019 +0200
1.3 @@ -563,6 +563,8 @@
1.4 self.next_temporary()
1.5 t2 = self.get_temporary_name()
1.6 self.next_temporary()
1.7 + t3 = self.get_temporary_name()
1.8 + self.next_temporary()
1.9
1.10 node = compiler.ast.Stmt([
1.11
1.12 @@ -583,9 +585,10 @@
1.13 # try:
1.14 # while True:
1.15 # try:
1.16 - # <var>... = <t2>()
1.17 + # <t3> = <t2>()
1.18 # except StopIteration:
1.19 # raise LoopExit
1.20 + # <var>... = <t3>
1.21 # {n.body}
1.22 # except LoopExit:
1.23 # {n.else_}
1.24 @@ -601,13 +604,16 @@
1.25 compiler.ast.Stmt([
1.26 compiler.ast.TryExcept(
1.27 compiler.ast.Assign(
1.28 - [n.assign],
1.29 + [compiler.ast.AssName(t3, "OP_ASSIGN")],
1.30 compiler.ast.CallFunc(
1.31 compiler.ast.Name(t2),
1.32 [])),
1.33 [(compiler.ast.Name("StopIteration"), None,
1.34 compiler.ast.Raise(compiler.ast.Name("LoopExit")))],
1.35 None),
1.36 + compiler.ast.Assign(
1.37 + [n.assign],
1.38 + compiler.ast.Name(t3)),
1.39 n.body]),
1.40 None),
1.41 [(compiler.ast.Name("LoopExit"), None, n.else_ or compiler.ast.Pass())],