Lichen

Change of common.py

904:938887b82033
common.py
     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())],