diff --git a/src/Generator/TypeGenerator.php b/src/Generator/TypeGenerator.php index 93f6cbbd..8148bcaa 100644 --- a/src/Generator/TypeGenerator.php +++ b/src/Generator/TypeGenerator.php @@ -33,7 +33,17 @@ final class TypeGenerator implements GeneratorInterface * * @link http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration */ - private static $internalPhpTypes = ['void', 'int', 'float', 'string', 'bool', 'array', 'callable', 'iterable']; + private static $internalPhpTypes = [ + 'void', + 'int', + 'float', + 'string', + 'bool', + 'array', + 'callable', + 'iterable', + 'object' + ]; /** * @var string a regex pattern to match valid class names or types diff --git a/test/Generator/MethodGeneratorTest.php b/test/Generator/MethodGeneratorTest.php index cc36fa2a..38bb6c1a 100644 --- a/test/Generator/MethodGeneratorTest.php +++ b/test/Generator/MethodGeneratorTest.php @@ -22,6 +22,7 @@ use ZendTest\Code\TestAsset\EmptyClass; use ZendTest\Code\TestAsset\InternalHintsClass; use ZendTest\Code\TestAsset\IterableHintsClass; +use ZendTest\Code\TestAsset\ObjectHintsClass; use ZendTest\Code\TestAsset\NullableReturnTypeHintedClass; use ZendTest\Code\TestAsset\ReturnTypeHintedClass; @@ -364,9 +365,19 @@ public function returnTypeHintClassesProvider() [NullableReturnTypeHintedClass::class, 'otherClassReturn', '?\\' . InternalHintsClass::class], [IterableHintsClass::class, 'iterableReturnValue', 'iterable'], [IterableHintsClass::class, 'nullableIterableReturnValue', '?iterable'], + [ObjectHintsClass::class, 'objectReturnValue', 'object'], + [ObjectHintsClass::class, 'nullableObjectReturnValue', '?object'], ]; - return $parameters; + return array_filter( + $parameters, + function (array $parameter) { + return PHP_VERSION_ID >= 70200 + || ( + false === strpos($parameter[2], 'object') + ); + } + ); } /** diff --git a/test/Generator/ParameterGeneratorTest.php b/test/Generator/ParameterGeneratorTest.php index 704fea77..c28c19cf 100644 --- a/test/Generator/ParameterGeneratorTest.php +++ b/test/Generator/ParameterGeneratorTest.php @@ -21,6 +21,7 @@ use ZendTest\Code\TestAsset\EmptyClass; use ZendTest\Code\TestAsset\InternalHintsClass; use ZendTest\Code\TestAsset\IterableHintsClass; +use ZendTest\Code\TestAsset\ObjectHintsClass; use ZendTest\Code\TestAsset\NullableHintsClass; use ZendTest\Code\TestAsset\NullNullableDefaultHintsClass; use ZendTest\Code\TestAsset\VariadicParametersClass; @@ -345,9 +346,6 @@ public function validClassNameProvider() ['mixed'], ['Mixed'], ['MIXED'], - ['object'], - ['Object'], - ['OBJECT'], ['resource'], ['Resource'], ['RESOURCE'], @@ -464,17 +462,30 @@ public function reflectionHintsProvider() [IterableHintsClass::class, 'iterableParameter', 'foo', 'iterable'], [IterableHintsClass::class, 'nullableIterableParameter', 'foo', '?iterable'], [IterableHintsClass::class, 'nullDefaultIterableParameter', 'foo', '?iterable'], + [ObjectHintsClass::class, 'objectParameter', 'foo', 'object'], + [ObjectHintsClass::class, 'nullableObjectParameter', 'foo', '?object'], + [ObjectHintsClass::class, 'nullDefaultObjectParameter', 'foo', '?object'], ]; + $compatibleParameters = array_filter( + $parameters, + function (array $parameter) { + return PHP_VERSION_ID >= 70200 + || ( + false === strpos($parameter[3], 'object') + ); + } + ); + // just re-organizing the keys so that the phpunit data set makes sense in errors: return array_combine( array_map( function (array $definition) { return $definition[0] . '#' . $definition[1]; }, - $parameters + $compatibleParameters ), - $parameters + $compatibleParameters ); } diff --git a/test/Generator/TypeGeneratorTest.php b/test/Generator/TypeGeneratorTest.php index 7da22ff2..9368b3bc 100644 --- a/test/Generator/TypeGeneratorTest.php +++ b/test/Generator/TypeGeneratorTest.php @@ -117,9 +117,9 @@ public function validTypeProvider() ['iterable', 'iterable'], ['Iterable', 'iterable'], ['ITERABLE', 'iterable'], - ['object', '\\object'], - ['Object', '\\Object'], - ['OBJECT', '\\OBJECT'], + ['object', 'object'], + ['Object', 'object'], + ['OBJECT', 'object'], ['mixed', '\\mixed'], ['Mixed', '\\Mixed'], ['MIXED', '\\MIXED'], @@ -157,9 +157,9 @@ public function validTypeProvider() ['?iterable', '?iterable'], ['?Iterable', '?iterable'], ['?ITERABLE', '?iterable'], - ['?object', '?\\object'], - ['?Object', '?\\Object'], - ['?OBJECT', '?\\OBJECT'], + ['?object', '?object'], + ['?Object', '?object'], + ['?OBJECT', '?object'], ['?mixed', '?\\mixed'], ['?Mixed', '?\\Mixed'], ['?MIXED', '?\\MIXED'], @@ -241,6 +241,9 @@ public function invalidTypeProvider() ['\\iterable'], ['\\Iterable'], ['\\ITERABLE'], + ['\\object'], + ['\\Object'], + ['\\OBJECT'], ]; return array_combine( diff --git a/test/TestAsset/ObjectHintsClass.php b/test/TestAsset/ObjectHintsClass.php new file mode 100644 index 00000000..88747662 --- /dev/null +++ b/test/TestAsset/ObjectHintsClass.php @@ -0,0 +1,26 @@ +