Fix py target for-from loop.
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 25 Mar 2009 20:05:22 +0000 (13:05 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 25 Mar 2009 20:05:22 +0000 (13:05 -0700)
Cython/Compiler/Nodes.py

index d63a4c1124f5f08f41b88b440acd2e9eff3e7e0c..fd3415702ef45af0423d54a0a15b4aaa300611f0 100644 (file)
@@ -3949,8 +3949,16 @@ class ForFromStatNode(LoopNode, StatNode):
         if self.py_loopvar_node:
             # Reassign py variable to loop var here.
             # (For consistancy, should rarely come up in practice.)
-            pass
+            import ExprNodes
+            from_py_node = ExprNodes.CoerceFromPyTypeNode(self.loopvar_node.type, self.target, None)
+            from_py_node.temp_code = loopvar_name
+            from_py_node.generate_result_code(code)
         code.putln("}")
+        if self.py_loopvar_node:
+            # This is potentially wasteful, but we don't want the semantics to 
+            # depend on whether or not the loop is a python type. 
+            self.py_loopvar_node.generate_evaluation_code(code)
+            self.target.generate_assignment_code(self.py_loopvar_node, code)
         break_label = code.break_label
         code.set_loop_labels(old_loop_labels)
         if self.else_clause: