Support PHP7.1 nullable types
parent
d5c54ac30f
commit
cbc6966c92
|
@ -701,11 +701,21 @@ class DefinitionResolver
|
||||||
* If it is unknown, will be Types\Mixed.
|
* If it is unknown, will be Types\Mixed.
|
||||||
* Returns null if the node does not have a type.
|
* Returns null if the node does not have a type.
|
||||||
*
|
*
|
||||||
* @param Node $node
|
* @param Node|string $node
|
||||||
* @return \phpDocumentor\Type|null
|
* @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) {
|
if ($node instanceof Node\Param) {
|
||||||
// Parameters
|
// Parameters
|
||||||
$docBlock = $node->getAttribute('parentNode')->getAttribute('docBlock');
|
$docBlock = $node->getAttribute('parentNode')->getAttribute('docBlock');
|
||||||
|
@ -722,12 +732,7 @@ class DefinitionResolver
|
||||||
}
|
}
|
||||||
if ($node->type !== null) {
|
if ($node->type !== null) {
|
||||||
// Use PHP7 return type hint
|
// Use PHP7 return type hint
|
||||||
if (is_string($node->type)) {
|
return $this->getTypeFromNode($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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ($node->default !== null) {
|
if ($node->default !== null) {
|
||||||
$defaultType = $this->resolveExpressionNodeToType($node->default);
|
$defaultType = $this->resolveExpressionNodeToType($node->default);
|
||||||
|
@ -751,12 +756,7 @@ class DefinitionResolver
|
||||||
return $returnTags[0]->getType();
|
return $returnTags[0]->getType();
|
||||||
}
|
}
|
||||||
if ($node->returnType !== null) {
|
if ($node->returnType !== null) {
|
||||||
// Use PHP7 return type hint
|
return $this->getTypeFromNode($node->returnType);
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
// Unknown return type
|
// Unknown return type
|
||||||
return new Types\Mixed;
|
return new Types\Mixed;
|
||||||
|
|
Loading…
Reference in New Issue