summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-01-14 13:58:23 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-01-14 13:58:23 (GMT)
commit527c62292675ce6f0528593915900f2d025b0259 (patch)
tree010c85e5dc0b555d1342040b04fadededc3b3984 /Python/compile.c
parent91f252b179c4d399f735fedf72e53148e0b057fc (diff)
downloadcpython-527c62292675ce6f0528593915900f2d025b0259.zip
cpython-527c62292675ce6f0528593915900f2d025b0259.tar.gz
cpython-527c62292675ce6f0528593915900f2d025b0259.tar.bz2
make YieldFrom its own distinct from Yield (closes #13780)
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 4d91f50..b64c800 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3311,21 +3311,25 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
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: