Skip to content

Commit 7026168

Browse files
committed
Added tests for closures with body
See: zephir-lang/zephir#1848
1 parent cde34b0 commit 7026168

File tree

4 files changed

+1114
-0
lines changed

4 files changed

+1114
-0
lines changed
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
--TEST--
2+
Tests empty closure with "use"
3+
--SKIPIF--
4+
<?php include(__DIR__ . '/../../skipif.inc'); ?>
5+
--FILE--
6+
<?php
7+
8+
$code =<<<ZEP
9+
namespace Example;
10+
11+
class Closure
12+
{
13+
public function callback()
14+
{
15+
var abc = 42;
16+
17+
return function () use (abc) { };
18+
}
19+
}
20+
ZEP;
21+
22+
$ir = zephir_parse_file($code, '(eval code)');
23+
24+
var_dump($ir);
25+
?>
26+
--EXPECT--
27+
array(2) {
28+
[0]=>
29+
array(5) {
30+
["type"]=>
31+
string(9) "namespace"
32+
["name"]=>
33+
string(7) "Example"
34+
["file"]=>
35+
string(11) "(eval code)"
36+
["line"]=>
37+
int(3)
38+
["char"]=>
39+
int(5)
40+
}
41+
[1]=>
42+
array(8) {
43+
["type"]=>
44+
string(5) "class"
45+
["name"]=>
46+
string(7) "Closure"
47+
["abstract"]=>
48+
int(0)
49+
["final"]=>
50+
int(0)
51+
["definition"]=>
52+
array(4) {
53+
["methods"]=>
54+
array(1) {
55+
[0]=>
56+
array(8) {
57+
["visibility"]=>
58+
array(1) {
59+
[0]=>
60+
string(6) "public"
61+
}
62+
["type"]=>
63+
string(6) "method"
64+
["name"]=>
65+
string(8) "callback"
66+
["statements"]=>
67+
array(2) {
68+
[0]=>
69+
array(6) {
70+
["type"]=>
71+
string(7) "declare"
72+
["data-type"]=>
73+
string(8) "variable"
74+
["variables"]=>
75+
array(1) {
76+
[0]=>
77+
array(5) {
78+
["variable"]=>
79+
string(3) "abc"
80+
["expr"]=>
81+
array(5) {
82+
["type"]=>
83+
string(3) "int"
84+
["value"]=>
85+
string(2) "42"
86+
["file"]=>
87+
string(11) "(eval code)"
88+
["line"]=>
89+
int(7)
90+
["char"]=>
91+
int(21)
92+
}
93+
["file"]=>
94+
string(11) "(eval code)"
95+
["line"]=>
96+
int(7)
97+
["char"]=>
98+
int(21)
99+
}
100+
}
101+
["file"]=>
102+
string(11) "(eval code)"
103+
["line"]=>
104+
int(9)
105+
["char"]=>
106+
int(14)
107+
}
108+
[1]=>
109+
array(5) {
110+
["type"]=>
111+
string(6) "return"
112+
["expr"]=>
113+
array(5) {
114+
["type"]=>
115+
string(7) "closure"
116+
["use"]=>
117+
array(1) {
118+
[0]=>
119+
array(9) {
120+
["type"]=>
121+
string(9) "parameter"
122+
["name"]=>
123+
string(3) "abc"
124+
["const"]=>
125+
int(0)
126+
["data-type"]=>
127+
string(8) "variable"
128+
["mandatory"]=>
129+
int(0)
130+
["reference"]=>
131+
int(0)
132+
["file"]=>
133+
string(11) "(eval code)"
134+
["line"]=>
135+
int(9)
136+
["char"]=>
137+
int(36)
138+
}
139+
}
140+
["file"]=>
141+
string(11) "(eval code)"
142+
["line"]=>
143+
int(9)
144+
["char"]=>
145+
int(41)
146+
}
147+
["file"]=>
148+
string(11) "(eval code)"
149+
["line"]=>
150+
int(10)
151+
["char"]=>
152+
int(5)
153+
}
154+
}
155+
["file"]=>
156+
string(11) "(eval code)"
157+
["line"]=>
158+
int(9)
159+
["last-line"]=>
160+
int(11)
161+
["char"]=>
162+
int(23)
163+
}
164+
}
165+
["file"]=>
166+
string(11) "(eval code)"
167+
["line"]=>
168+
int(3)
169+
["char"]=>
170+
int(5)
171+
}
172+
["file"]=>
173+
string(11) "(eval code)"
174+
["line"]=>
175+
int(3)
176+
["char"]=>
177+
int(5)
178+
}
179+
}

0 commit comments

Comments
 (0)