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