diff Python/compile.c @ 74391:e1177b9167ce

make YieldFrom its own distinct from Yield (closes #13780)
author Benjamin Peterson <benjamin@python.org>
date Sat, 14 Jan 2012 08:58:23 -0500
parents d64ac9ab4cd0
children 72556ff86828
line wrap: on
line diff
--- a/Python/compile.c	Sat Jan 14 21:08:15 2012 +0800
+++ b/Python/compile.c	Sat Jan 14 08:58:23 2012 -0500
@@ -3311,21 +3311,25 @@
     case DictComp_kind:
         return compiler_dictcomp(c, e);
     case Yield_kind:
+    case YieldFrom_kind: {
+        expr_ty value;
         if (c->u->u_ste->ste_type != FunctionBlock)
             return compiler_error(c, "'yield' outside function");
-        if (e->v.Yield.value) {
-            VISIT(c, expr, e->v.Yield.value);
+        value = (e->kind == YieldFrom_kind) ? e->v.YieldFrom.value : e->v.Yield.value;
+        if (value) {
+            VISIT(c, expr, value);
         }
         else {
             ADDOP_O(c, LOAD_CONST, Py_None, consts);
         }
-        if (e->v.Yield.is_from) {
+        if (e->kind == YieldFrom_kind) {
             ADDOP(c, YIELD_FROM);
         }
         else {
             ADDOP(c, YIELD_VALUE);
         }
         break;
+    }
     case Compare_kind:
         return compiler_compare(c, e);
     case Call_kind: