Skip to content

Commit d11a8f2

Browse files
committed
Adds tests concerning arrow functions auto-capturing
1 parent 48f2aea commit d11a8f2

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

Zend/tests/arrow_functions/010.phpt

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
--TEST--
2+
Arrow functions auto-capture variables, by value.
3+
--FILE--
4+
<?php
5+
6+
$a = 0;
7+
$fn = fn() {
8+
var_dump(isset($a));
9+
$a = 1;
10+
var_dump($a);
11+
};
12+
var_dump($a);
13+
$fn();
14+
var_dump($a);
15+
16+
$a = 2;
17+
$fn = fn() {
18+
$a++;
19+
var_dump($a);
20+
};
21+
var_dump($a);
22+
$fn();
23+
var_dump($a);
24+
25+
$a = 3;
26+
$fn = fn() {
27+
if (false) $a = 4;
28+
var_dump($a);
29+
};
30+
var_dump($a);
31+
$fn();
32+
var_dump($a);
33+
34+
$a = 5;
35+
$fn = fn() {
36+
var_dump($a);
37+
if (false) $a = 6;
38+
};
39+
var_dump($a);
40+
$fn();
41+
var_dump($a);
42+
43+
$a = 7;
44+
$fn = fn() {
45+
unset($a);
46+
var_dump(isset($a));
47+
};
48+
var_dump($a);
49+
$fn();
50+
var_dump($a);
51+
52+
$a = 8;
53+
$fn = fn() {
54+
$a = 9;
55+
unset($a);
56+
var_dump(isset($a));
57+
};
58+
var_dump($a);
59+
$fn();
60+
var_dump($a);
61+
62+
$a = 10;
63+
$fn = fn() { return fn () { var_dump($a); }; };
64+
var_dump($a);
65+
$fn()();
66+
var_dump($a);
67+
68+
?>
69+
--EXPECT--
70+
int(0)
71+
bool(true)
72+
int(1)
73+
int(0)
74+
int(2)
75+
int(3)
76+
int(2)
77+
int(3)
78+
int(3)
79+
int(3)
80+
int(5)
81+
int(5)
82+
int(5)
83+
int(7)
84+
bool(false)
85+
int(7)
86+
int(8)
87+
bool(false)
88+
int(8)
89+
int(10)
90+
int(10)
91+
int(10)

0 commit comments

Comments
 (0)