[PropertyInfo] Fixed type extraction for nullable collections of non-nullable elements
This commit is contained in:
parent
e8b31ff608
commit
5e394c40f0
@ -90,6 +90,7 @@ class PhpDocExtractorTest extends TestCase
|
|||||||
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
||||||
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
||||||
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
||||||
|
['nullableCollectionOfNonNullableElements', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_INT, false))], null, null],
|
||||||
['donotexist', null, null, null],
|
['donotexist', null, null, null],
|
||||||
['staticGetter', null, null, null],
|
['staticGetter', null, null, null],
|
||||||
['staticSetter', null, null, null],
|
['staticSetter', null, null, null],
|
||||||
@ -174,6 +175,7 @@ class PhpDocExtractorTest extends TestCase
|
|||||||
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
||||||
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
||||||
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
||||||
|
['nullableCollectionOfNonNullableElements', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_INT, false))], null, null],
|
||||||
['donotexist', null, null, null],
|
['donotexist', null, null, null],
|
||||||
['staticGetter', null, null, null],
|
['staticGetter', null, null, null],
|
||||||
['staticSetter', null, null, null],
|
['staticSetter', null, null, null],
|
||||||
@ -214,6 +216,7 @@ class PhpDocExtractorTest extends TestCase
|
|||||||
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
|
||||||
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
|
||||||
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
|
||||||
|
['nullableCollectionOfNonNullableElements', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_INT, false))], null, null],
|
||||||
['donotexist', null, null, null],
|
['donotexist', null, null, null],
|
||||||
['staticGetter', null, null, null],
|
['staticGetter', null, null, null],
|
||||||
['staticSetter', null, null, null],
|
['staticSetter', null, null, null],
|
||||||
|
@ -51,6 +51,7 @@ class ReflectionExtractorTest extends TestCase
|
|||||||
'h',
|
'h',
|
||||||
'i',
|
'i',
|
||||||
'j',
|
'j',
|
||||||
|
'nullableCollectionOfNonNullableElements',
|
||||||
'emptyVar',
|
'emptyVar',
|
||||||
'iteratorCollection',
|
'iteratorCollection',
|
||||||
'iteratorCollectionWithKey',
|
'iteratorCollectionWithKey',
|
||||||
@ -97,6 +98,7 @@ class ReflectionExtractorTest extends TestCase
|
|||||||
'h',
|
'h',
|
||||||
'i',
|
'i',
|
||||||
'j',
|
'j',
|
||||||
|
'nullableCollectionOfNonNullableElements',
|
||||||
'emptyVar',
|
'emptyVar',
|
||||||
'iteratorCollection',
|
'iteratorCollection',
|
||||||
'iteratorCollectionWithKey',
|
'iteratorCollectionWithKey',
|
||||||
@ -133,6 +135,7 @@ class ReflectionExtractorTest extends TestCase
|
|||||||
'h',
|
'h',
|
||||||
'i',
|
'i',
|
||||||
'j',
|
'j',
|
||||||
|
'nullableCollectionOfNonNullableElements',
|
||||||
'emptyVar',
|
'emptyVar',
|
||||||
'iteratorCollection',
|
'iteratorCollection',
|
||||||
'iteratorCollectionWithKey',
|
'iteratorCollectionWithKey',
|
||||||
|
@ -93,6 +93,11 @@ class Dummy extends ParentDummy
|
|||||||
*/
|
*/
|
||||||
public $j;
|
public $j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int[]|null
|
||||||
|
*/
|
||||||
|
public $nullableCollectionOfNonNullableElements;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
|
@ -114,7 +114,7 @@ final class PhpDocTypeHelper
|
|||||||
$collectionValueType = null;
|
$collectionValueType = null;
|
||||||
} else {
|
} else {
|
||||||
$collectionKeyType = new Type(Type::BUILTIN_TYPE_INT);
|
$collectionKeyType = new Type(Type::BUILTIN_TYPE_INT);
|
||||||
$collectionValueType = $this->createType($type, $nullable, substr($docType, 0, -2));
|
$collectionValueType = $this->createType($type, false, substr($docType, 0, -2));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Type(Type::BUILTIN_TYPE_ARRAY, $nullable, null, true, $collectionKeyType, $collectionValueType);
|
return new Type(Type::BUILTIN_TYPE_ARRAY, $nullable, null, true, $collectionKeyType, $collectionValueType);
|
||||||
|
Reference in New Issue
Block a user