PythonExtra/tests/basics/gen_yield_from_throw2.py
Damien George 0c9d452370 py/vm: Fix case of throwing GeneratorExit type into yield-from.
mp_make_raise_obj must be used to convert a possible exception type to an
instance object, otherwise the VM may raise a non-exception object.

An existing test is adjusted to test this case, with the original test
already moved to generator_throw.py.
2018-09-28 11:39:35 +10:00

25 lines
441 B
Python

# outer generator ignores a thrown GeneratorExit (this is allowed)
def gen():
try:
yield 123
except GeneratorExit:
print('GeneratorExit')
def gen2():
try:
yield from gen()
except GeneratorExit:
print('GeneratorExit outer')
yield 789
# thrown a class
g = gen2()
print(next(g))
print(g.throw(GeneratorExit))
# thrown an instance
g = gen2()
print(next(g))
print(g.throw(GeneratorExit()))