diff Python/pythonrun.c @ 18243:47717e5667eb legacy-trunk

Change the semantics of "return" in generators, as discussed on the Iterators list and Python-Dev; e.g., these all pass now: def g1(): try: return except: yield 1 assert list(g1()) == [] def g2(): try: return finally: yield 1 assert list(g2()) == [1] def g3(): for i in range(3): yield None yield None assert list(g3()) == [None] * 4 compile.c: compile_funcdef and com_return_stmt: Just van Rossum's patch to compile the same code for "return" regardless of function type (this goes back to the previous scheme of returning Py_None). ceval.c: gen_iternext: take a return (but not a yield) of Py_None as meaning the generator is exhausted.
author Tim Peters <tim.peters@gmail.com>
date Sat, 23 Jun 2001 06:19:16 +0000
parents 9dda0c11e006
children fdb36a0c7e6e
line wrap: on
line diff