Skip to content

Commit b735b1b

Browse files
committed
Add test to verify the Closure dies with the generator
1 parent 0852151 commit b735b1b

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
--TEST--
2+
The Closure object of a generator is freed when the generator is freed.
3+
--FILE--
4+
<?php
5+
6+
$m = new WeakMap();
7+
8+
$genFactory = function() {
9+
yield 1;
10+
yield 2;
11+
yield 3;
12+
};
13+
14+
$r = WeakReference::create($genFactory);
15+
$generator = $genFactory();
16+
unset($genFactory);
17+
18+
var_dump($r->get());
19+
20+
foreach ($generator as $value) var_dump($value);
21+
22+
var_dump($r->get());
23+
24+
unset($generator);
25+
26+
var_dump($r->get());
27+
28+
?>
29+
--EXPECTF--
30+
object(Closure)#%d (3) {
31+
["name"]=>
32+
string(%d) "{closure:%s:%d}"
33+
["file"]=>
34+
string(%d) "%s"
35+
["line"]=>
36+
int(%d)
37+
}
38+
int(1)
39+
int(2)
40+
int(3)
41+
object(Closure)#%d (3) {
42+
["name"]=>
43+
string(%d) "{closure:%s:%d}"
44+
["file"]=>
45+
string(%d) "%s"
46+
["line"]=>
47+
int(%d)
48+
}
49+
NULL

0 commit comments

Comments
 (0)