[php-src] Issue #12715: Zend/tests/generators/multiple_yield_from_on_same_generator.phpt bug or designed feature?
| From: | heguangyu5 | 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