@@ 71-75 (lines=5) @@ | ||
68 | } |
|
69 | ||
70 | // Check iterable |
|
71 | if ($superTypeName === BuiltInTypes::ITERABLE) { |
|
72 | return $subTypeName === BuiltInTypes::ARRAY |
|
73 | || $subTypeName === \Traversable::class |
|
74 | || \is_subclass_of($subTypeName, \Traversable::class); |
|
75 | } |
|
76 | ||
77 | // Check callable |
|
78 | if ($superTypeName === BuiltInTypes::CALLABLE) { |
|
@@ 78-82 (lines=5) @@ | ||
75 | } |
|
76 | ||
77 | // Check callable |
|
78 | if ($superTypeName === BuiltInTypes::CALLABLE) { |
|
79 | return $subTypeName === \Closure::class |
|
80 | || \method_exists($subTypeName, '__invoke') |
|
81 | || \is_subclass_of($subTypeName, \Closure::class); |
|
82 | } |
|
83 | ||
84 | // If the super type is built-in, check whether casting rules can succeed |
|
85 | if (isset(self::$builtInTypes[$superTypeName])) { |