Security update for Core, with self-updated composer
[yaffs-website] / vendor / phpspec / prophecy / src / Prophecy / Doubler / Generator / ClassCodeGenerator.php
index fc1079c5acb15a5f5e90ac740b95e0ffd9f03ffc..891faa8fbe17b4c64287859141083e810a36d252 100644 (file)
@@ -19,6 +19,16 @@ namespace Prophecy\Doubler\Generator;
  */
 class ClassCodeGenerator
 {
+    /**
+     * @var TypeHintReference
+     */
+    private $typeHintReference;
+
+    public function __construct(TypeHintReference $typeHintReference = null)
+    {
+        $this->typeHintReference = $typeHintReference ?: new TypeHintReference();
+    }
+
     /**
      * Generates PHP code for class node.
      *
@@ -91,7 +101,8 @@ class ClassCodeGenerator
 
     private function generateArguments(array $arguments)
     {
-        return array_map(function (Node\ArgumentNode $argument) {
+        $typeHintReference = $this->typeHintReference;
+        return array_map(function (Node\ArgumentNode $argument) use ($typeHintReference) {
             $php = '';
 
             if (version_compare(PHP_VERSION, '7.1', '>=')) {
@@ -99,34 +110,7 @@ class ClassCodeGenerator
             }
 
             if ($hint = $argument->getTypeHint()) {
-                switch ($hint) {
-                    case 'array':
-                    case 'callable':
-                        $php .= $hint;
-                        break;
-
-                    case 'iterable':
-                        if (version_compare(PHP_VERSION, '7.1', '>=')) {
-                            $php .= $hint;
-                            break;
-                        }
-
-                        $php .= '\\'.$hint;
-                        break;
-
-                    case 'string':
-                    case 'int':
-                    case 'float':
-                    case 'bool':
-                        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-                            $php .= $hint;
-                            break;
-                        }
-                        // Fall-through to default case for PHP 5.x
-
-                    default:
-                        $php .= '\\'.$hint;
-                }
+                $php .= $typeHintReference->isBuiltInParamTypeHint($hint) ? $hint : '\\'.$hint;
             }
 
             $php .= ' '.($argument->isPassedByReference() ? '&' : '');