[php-src] Issue #12715: Zend/tests/generators/multiple_yield_from_on_same_generator.phpt bug or designed feature?

From: Date: Sat, 18 Nov 2023 00:30:32 +0000
Subject: [php-src] Issue #12715: Zend/tests/generators/multiple_yield_from_on_same_generator.phpt bug or designed feature?
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-245835@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/12715 Author: heguangyu5 ### Description The following code: https://3v4l.org/C7uM1 ```php <?php // This is a simple version of multiple_yield_from_on_same_generator.phpt function from() { yield 'a' => 1; yield 'b' => 2; echo "--from return END--\n"; return 'END'; } function gen($from) { var_dump(yield from $from); } $from = from(); $g1 = gen($from); $g2 = gen($from); echo "g1: expect a => 1\n"; var_dump($g1->key()); // $from yield a => 1 var_dump($g1->current()); $g1->next(); // $from yield b => 2 echo "g2: expect b => 2\n"; var_dump($g2->key()); var_dump($g2->current()); echo "expect from return END, gen var_dump(END)\n"; $g2->next(); // $from return END, gen() var_dump, $g2 closed echo "g1: expect gen() var_dump(END), then NULL => NULL, actually no var_dump, NULL => 2\n"; var_dump($g1->key()); // $from already closed, expect gen() var_dump, $g1 closed var_dump($g1->current()); ``` Resulted in this output: ``` g1: expect a => 1 string(1) "a" int(1) g2: expect b => 2 string(1) "b" int(2) expect from return END, gen var_dump(END) --from return END-- string(3) "END" g1: expect gen() var_dump(END), then NULL => NULL, actually no var_dump, NULL => 2 NULL int(2) ``` The related bug report [#70904](https://bugs.php.net/bug.php?id=70904) Expected result logic seems incorrect, a inner generator finished lead to outer generator infinite loop ??? ### PHP Version PHP 8.2.12 ### Operating System Ubuntu 18.04

« previous php.bugs (#245835) next »