Skip to content

Commit 9cc2357

Browse files
committed
Add test to verify the Closure dies with the generator
1 parent 111e856 commit 9cc2357

File tree

1 file changed

+47
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)