php-src/Zend/tests/generators/gc_with_yield_from.phpt

48 lines
657 B
Plaintext
Raw Normal View History

2016-04-18 21:54:41 +00:00
--TEST--
Verify yield from on generators being properly cycle collected
2017-01-10 16:57:59 +00:00
--INI--
zend.enable_gc = 1
2016-04-18 21:54:41 +00:00
--FILE--
<?php
function root() {
global $gens; // create cyclic reference to root
try {
yield 1;
} finally {
var_dump($gens);
}
}
function gen($x) {
global $gens;
yield from $gens[] = $x ? gen(--$x) : root();
}
$gen = $gens[] = gen(2);
var_dump($gen->current());
unset($gen, $gens);
print "collect\n";
gc_collect_cycles();
print "end\n";
?>
--EXPECT--
int(1)
collect
array(4) {
[0]=>
object(Generator)#1 (0) {
}
[1]=>
object(Generator)#2 (0) {
}
[2]=>
object(Generator)#3 (0) {
}
[3]=>
object(Generator)#4 (0) {
}
}
end