diff options
author | Damien George <damien.p.george@gmail.com> | 2018-09-27 15:18:24 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-09-27 15:18:24 +1000 |
commit | fc1bb51af57d8f01db4b6be231fd851b2016919a (patch) | |
tree | 2bb3b6715ccd5177c09c1ecef3beea54b13394c5 | |
parent | 6d20be31aee832017982faeb2c349f65030ddd27 (diff) |
py/objgenerator: Remove TODO about returning gen being called again.
The code implements correct behaviour, as tested by the new test case added
in this commit.
-rw-r--r-- | py/objgenerator.c | 2 | ||||
-rw-r--r-- | tests/basics/generator_return.py | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/py/objgenerator.c b/py/objgenerator.c index 341967dc0..038c15fc3 100644 --- a/py/objgenerator.c +++ b/py/objgenerator.c @@ -128,8 +128,6 @@ mp_vm_return_kind_t mp_obj_gen_resume(mp_obj_t self_in, mp_obj_t send_value, mp_ // Explicitly mark generator as completed. If we don't do this, // subsequent next() may re-execute statements after last yield // again and again, leading to side effects. - // TODO: check how return with value behaves under such conditions - // in CPython. self->code_state.ip = 0; *ret_val = *self->code_state.sp; break; diff --git a/tests/basics/generator_return.py b/tests/basics/generator_return.py index 5814ce837..2b3464a02 100644 --- a/tests/basics/generator_return.py +++ b/tests/basics/generator_return.py @@ -8,3 +8,9 @@ try: print(next(g)) except StopIteration as e: print(type(e), e.args) + +# trying next again should raise StopIteration with no arguments +try: + print(next(g)) +except StopIteration as e: + print(type(e), e.args) |