1
0
Fork 0

Support PHP7.1 nullable types

pull/292/head
Felix Becker 2017-02-08 17:51:42 +01:00
parent d5c54ac30f
commit cbc6966c92
1 changed files with 14 additions and 14 deletions

View File

@ -701,11 +701,21 @@ class DefinitionResolver
* If it is unknown, will be Types\Mixed.
* Returns null if the node does not have a type.
*
* @param Node $node
* @param Node|string $node
* @return \phpDocumentor\Type|null
*/
public function getTypeFromNode(Node $node)
public function getTypeFromNode($node)
{
if (is_string($node)) {
// Resolve a string like "bool" to a type object
return $this->typeResolver->resolve($node->returnType);
}
if ($node instanceof Node\Name) {
return new Types\Object_(new Fqsen('\\' . (string)$node));
}
if ($node instanceof Node\NullableType) {
return new Types\Compound([new Types\Null_, $this->getTypeFromNode($node->type)]);
}
if ($node instanceof Node\Param) {
// Parameters
$docBlock = $node->getAttribute('parentNode')->getAttribute('docBlock');
@ -722,12 +732,7 @@ class DefinitionResolver
}
if ($node->type !== null) {
// Use PHP7 return type hint
if (is_string($node->type)) {
// Resolve a string like "bool" to a type object
$type = $this->typeResolver->resolve($node->type);
} else {
$type = new Types\Object_(new Fqsen('\\' . (string)$node->type));
}
return $this->getTypeFromNode($node->type);
}
if ($node->default !== null) {
$defaultType = $this->resolveExpressionNodeToType($node->default);
@ -751,12 +756,7 @@ class DefinitionResolver
return $returnTags[0]->getType();
}
if ($node->returnType !== null) {
// Use PHP7 return type hint
if (is_string($node->returnType)) {
// Resolve a string like "bool" to a type object
return $this->typeResolver->resolve($node->returnType);
}
return new Types\Object_(new Fqsen('\\' . (string)$node->returnType));
return $this->getTypeFromNode($node->returnType);
}
// Unknown return type
return new Types\Mixed;