Skip to content

Commit 13b2dc9

Browse files
committed
Test inference exceptions
1 parent cd262a0 commit 13b2dc9

File tree

1 file changed

+50
-13
lines changed

1 file changed

+50
-13
lines changed

ext/reflection/tests/closures_005.phpt

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,64 @@
22
Test closure isStatic
33
--FILE--
44
<?php
5-
class Foo {
6-
public static function bar(){}
7-
public function baz() {}
8-
9-
public function qux() {
10-
return static function(){};
5+
6+
namespace {
7+
class Foo {
8+
public static function bar(){}
9+
public function baz() {}
10+
11+
public function qux() {
12+
return static function(){};
13+
}
1114
}
15+
16+
$foo = new Foo;
17+
18+
var_dump(
19+
(new ReflectionFunction(function(){}))->isStatic(),
20+
(new ReflectionFunction(static function(){}))->isStatic(),
21+
(new ReflectionFunction($foo->qux()))->isStatic(),
22+
(new ReflectionMethod($foo, 'bar'))->isStatic(),
23+
(new ReflectionMethod($foo, 'baz'))->isStatic(),
24+
25+
// Static closure inference exceptions
26+
(new ReflectionFunction(function () { $$var; }))->isStatic(),
27+
(new ReflectionFunction(function () { $var(); }))->isStatic(),
28+
(new ReflectionFunction(function () { call_user_func('Foo::bar'); }))->isStatic(),
29+
(new ReflectionFunction(function () { ('Foo::bar')(); }))->isStatic(),
30+
(new ReflectionFunction(function () { Foo::bar(); }))->isStatic(),
31+
(new ReflectionFunction(function () { $this; }))->isStatic(),
32+
(new ReflectionFunction(function () { function () { $this; }; }))->isStatic(),
33+
(new ReflectionFunction(function () { function () { require $var; }; }))->isStatic(),
34+
(new ReflectionFunction(function () { function () { eval('Foo::bar();'); }; }))->isStatic(),
35+
);
1236
}
1337

14-
$foo = new Foo;
38+
namespace Foo {
39+
var_dump(
40+
// Static closure inference exceptions
41+
(new \ReflectionFunction(function () { call_user_func('Foo::bar'); }))->isStatic(),
42+
(new \ReflectionFunction(function () { ('Foo::bar')(); }))->isStatic(),
43+
(new \ReflectionFunction(function () { Foo::bar(); }))->isStatic(),
44+
);
45+
}
1546

16-
var_dump(
17-
(new ReflectionFunction(function(){}))->isStatic(),
18-
(new ReflectionFunction(static function(){}))->isStatic(),
19-
(new ReflectionFunction($foo->qux()))->isStatic(),
20-
(new ReflectionMethod($foo, 'bar'))->isStatic(),
21-
(new ReflectionMethod($foo, 'baz'))->isStatic(),);
2247
?>
2348
--EXPECT--
2449
bool(true)
2550
bool(true)
2651
bool(true)
2752
bool(true)
2853
bool(false)
54+
bool(false)
55+
bool(false)
56+
bool(false)
57+
bool(false)
58+
bool(false)
59+
bool(false)
60+
bool(false)
61+
bool(false)
62+
bool(false)
63+
bool(false)
64+
bool(false)
65+
bool(false)

0 commit comments

Comments
 (0)