File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Expand file tree Collapse file tree 1 file changed +49
-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
+ $ 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
You can’t perform that action at this time.
0 commit comments