xref: /php-src/Zend/tests/bug79778.phpt (revision 08b2ab22)
1--TEST--
2Bug #79778: Assertion failure if dumping closure with unresolved static variable
3--FILE--
4<?php
5$closure1 = function() {
6    static $var = CONST_REF;
7};
8
9var_dump($closure1);
10print_r($closure1);
11
12try {
13    $closure1();
14} catch (\Error $e) {
15    echo $e->getMessage(), "\n";
16}
17
18var_dump($closure1);
19print_r($closure1);
20
21const CONST_REF = 'foo';
22$closure1();
23var_dump($closure1);
24print_r($closure1);
25
26?>
27--EXPECTF--
28object(Closure)#%d (4) {
29  ["name"]=>
30  string(%d) "{closure:%s:%d}"
31  ["file"]=>
32  string(%d) "%s"
33  ["line"]=>
34  int(%d)
35  ["static"]=>
36  array(1) {
37    ["var"]=>
38    NULL
39  }
40}
41Closure Object
42(
43    [name] => {closure:%s:%d}
44    [file] => %s
45    [line] => %d
46    [static] => Array
47        (
48            [var] =>
49        )
50
51)
52Undefined constant "CONST_REF"
53object(Closure)#%d (4) {
54  ["name"]=>
55  string(%d) "{closure:%s:%d}"
56  ["file"]=>
57  string(%d) "%s"
58  ["line"]=>
59  int(%d)
60  ["static"]=>
61  array(1) {
62    ["var"]=>
63    NULL
64  }
65}
66Closure Object
67(
68    [name] => {closure:%s:%d}
69    [file] => %s
70    [line] => %d
71    [static] => Array
72        (
73            [var] =>
74        )
75
76)
77object(Closure)#%d (4) {
78  ["name"]=>
79  string(%d) "{closure:%s:%d}"
80  ["file"]=>
81  string(%d) "%s"
82  ["line"]=>
83  int(%d)
84  ["static"]=>
85  array(1) {
86    ["var"]=>
87    string(3) "foo"
88  }
89}
90Closure Object
91(
92    [name] => {closure:%s:%d}
93    [file] => %s
94    [line] => %d
95    [static] => Array
96        (
97            [var] => foo
98        )
99
100)
101