File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments