diff --git a/src/Barryvdh/Reflection/DocBlock/Type/Collection.php b/src/Barryvdh/Reflection/DocBlock/Type/Collection.php index 936ee28..a053901 100644 --- a/src/Barryvdh/Reflection/DocBlock/Type/Collection.php +++ b/src/Barryvdh/Reflection/DocBlock/Type/Collection.php @@ -37,7 +37,14 @@ class Collection extends \ArrayObject protected static $keywords = array( 'string', 'int', 'integer', 'bool', 'boolean', 'float', 'double', 'object', 'mixed', 'array', 'resource', 'void', 'null', 'scalar', - 'callback', 'callable', 'false', 'true', 'self', '$this', 'static' + 'callback', 'callable', 'false', 'true', 'self', '$this', 'static', + 'array-key', 'number', 'iterable', 'pure-callable', 'closed-resource', + 'open-resource', 'positive-int', 'negative-int', 'non-positive-int', + 'non-negative-int', 'non-zero-int', 'non-empty-array', 'list', + 'non-empty-list', 'key-of', 'value-of', 'template-type', 'class-string', + 'callable-string', 'numeric-string', 'non-empty-string', + 'non-falsy-string', 'literal-string', 'lowercase-string', 'never', + 'never-return', 'never-returns', 'no-return', 'int-mask', 'int-mask-of' ); /** @@ -194,7 +201,7 @@ class Collection extends \ArrayObject return ''; } - if (substr($type, 0, 6) === 'array<' && substr($type, -1) === '>') { + if (preg_match('/^[\w-]+<.*>$/', $type)) { return $type; } diff --git a/tests/Barryvdh/Reflection/DocBlock/Type/CollectionTest.php b/tests/Barryvdh/Reflection/DocBlock/Type/CollectionTest.php index b3dcba0..94c8548 100644 --- a/tests/Barryvdh/Reflection/DocBlock/Type/CollectionTest.php +++ b/tests/Barryvdh/Reflection/DocBlock/Type/CollectionTest.php @@ -219,6 +219,10 @@ class CollectionTest extends TestCase 'DocBlock[]|int[]', array($namespace.'DocBlock[]', 'int[]') ), + array( + 'array', + array('array') + ), array( 'array', array('array') @@ -243,6 +247,42 @@ class CollectionTest extends TestCase 'Alias\LinkDescriptor::setLink()', array('\My\Space\Aliasing\LinkDescriptor::setLink()') ), + array( + 'int<0, 100>', + array('int<0, 100>') + ), + array( + 'non-empty-array', + array('non-empty-array') + ), + array( + 'non-empty-array', + array('non-empty-array') + ), + array( + 'list', + array('list') + ), + array( + 'non-empty-list', + array('non-empty-list') + ), + array( + 'key-of', + array('key-of') + ), + array( + 'value-of', + array('value-of') + ), + array( + 'value-of', + array('value-of') + ), + array( + 'iterable', + array('iterable') + ), ); }