1--TEST--
2callable type#001
3--FILE--
4<?php
5
6class bar {
7    function baz() {}
8    static function foo() {}
9}
10function foo(callable $bar) {
11    var_dump($bar);
12}
13$closure = function () {};
14
15foo("strpos");
16foo("foo");
17foo($closure);
18foo(array("bar", "foo"));
19foo(array("bar", "baz"));
20?>
21--EXPECTF--
22string(6) "strpos"
23string(3) "foo"
24object(Closure)#%d (3) {
25  ["name"]=>
26  string(%d) "{closure:%s:%d}"
27  ["file"]=>
28  string(%d) "%s"
29  ["line"]=>
30  int(%d)
31}
32array(2) {
33  [0]=>
34  string(3) "bar"
35  [1]=>
36  string(3) "foo"
37}
38
39Fatal error: Uncaught TypeError: foo(): Argument #1 ($bar) must be of type callable, array given, called in %s:%d
40Stack trace:
41#0 %s(%d): foo(Array)
42#1 {main}
43  thrown in %s on line %d
44