Remove OldYieldExprNode
authorVitja Makarov <vitja.makarov@gmail.com>
Sun, 19 Dec 2010 08:32:43 +0000 (11:32 +0300)
committerVitja Makarov <vitja.makarov@gmail.com>
Sun, 19 Dec 2010 08:32:43 +0000 (11:32 +0300)
Cython/Compiler/ExprNodes.py
Cython/Compiler/Optimize.py
Cython/Compiler/ParseTreeTransforms.py
Cython/Compiler/Parsing.py

index 88548fece1d1d655fd6447dc26de76638d9f507f..457684b5cab4952502146889952ac2b8dd193a1b 100755 (executable)
@@ -4947,32 +4947,6 @@ class LambdaNode(InnerFunctionNode):
         env.add_lambda_def(self.def_node)
 
 
-class OldYieldExprNode(ExprNode):
-    # XXX: remove me someday
-    #
-    # arg         ExprNode   the value to return from the generator
-    # label_name  string     name of the C label used for this yield
-
-    subexprs = ['arg']
-    type = py_object_type
-
-    def analyse_types(self, env):
-        self.is_temp = 1
-        if self.arg is not None:
-            self.arg.analyse_types(env)
-            if not self.arg.type.is_pyobject:
-                self.arg = self.arg.coerce_to_pyobject(env)
-        error(self.pos, "Generators are not supported")
-
-    def generate_result_code(self, code):
-        self.label_name = code.new_label('resume_from_yield')
-        code.use_label(self.label_name)
-        code.putln("/* FIXME: save temporary variables */")
-        code.putln("/* FIXME: return from function, yielding value */")
-        code.put_label(self.label_name)
-        code.putln("/* FIXME: restore temporary variables and  */")
-        code.putln("/* FIXME: extract sent value from closure */")
-
 class YieldExprNode(ExprNode):
     # Yield expression node
     #
index 9594b63f1991f4efcd3e955ed8f179278eeb1d8d..28ed19ff47d27498c9204f274d041c31b066b360 100644 (file)
@@ -1167,7 +1167,7 @@ class EarlyReplaceBuiltinCalls(Visitor.EnvTransform):
             self.yield_nodes = []
 
         visit_Node = Visitor.TreeVisitor.visitchildren
-        def visit_OldYieldExprNode(self, node):
+        def visit_YieldExprNode(self, node):
             self.yield_nodes.append(node)
             self.visitchildren(node)
 
index 584ca2019ed938bd15f34e4bdc55df98f84da0e3..73e72565dce8d0933dc632f1f2498c8b4a540f69 100644 (file)
@@ -1332,6 +1332,9 @@ class YieldNodeCollector(TreeVisitor):
     def visit_DefNode(self, node):
         pass
 
+    def visit_GeneratorExpressionNode(self, node):
+        pass
+
 class MarkClosureVisitor(CythonTransform):
 
     def visit_ModuleNode(self, node):
@@ -1374,7 +1377,6 @@ class MarkClosureVisitor(CythonTransform):
         self.needs_closure = True
         return node
 
-
 class CreateClosureClasses(CythonTransform):
     # Output closure classes in module scope for all functions
     # that really need it.
index d27ed4af5e68c9bca7082f4635c4490bbc34971d..3543ec7eb1b23a2f03c893959e2c02f5ca49bee4 100644 (file)
@@ -1029,7 +1029,7 @@ def p_testlist_comp(s):
 def p_genexp(s, expr):
     # s.sy == 'for'
     loop = p_comp_for(s, Nodes.ExprStatNode(
-        expr.pos, expr = ExprNodes.OldYieldExprNode(expr.pos, arg=expr)))
+        expr.pos, expr = ExprNodes.YieldExprNode(expr.pos, arg=expr)))
     return ExprNodes.GeneratorExpressionNode(expr.pos, loop=loop)
 
 expr_terminators = (')', ']', '}', ':', '=', 'NEWLINE')