From 4365fac0b0723d6e065905c05a7f5797b50559bc Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sun, 20 Nov 2016 23:58:22 +0100 Subject: [PATCH] Use property and constant values --- src/DefinitionResolver.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index 9f20b1b..e8b28c5 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -671,17 +671,23 @@ class DefinitionResolver || $node instanceof Node\Expr\AssignOp ) { // Property, constant or variable + // Use @var tag if ( ($parent = $node->getAttribute('parentNode')) && ($docBlock = $parent->getAttribute('docBlock')) && !empty($varTags = $docBlock->getTagsByName('var')) && ($type = $varTags[0]->getType()) ) { - // Use @var tag return $type; } - if ($node instanceof Node\Expr\Assign || $node instanceof Node\Expr\AssignOp) { - // Resolve the expression + // Resolve the expression + if ($node instanceof Node\Stmt\PropertyProperty) { + if ($node->default) { + return $this->resolveExpressionNodeToType($node->default); + } + } else if ($node instanceof Node\Const_) { + return $this->resolveExpressionNodeToType($node->value); + } else if ($node instanceof Node\Expr\Assign || $node instanceof Node\Expr\AssignOp) { return $this->resolveExpressionNodeToType($node); } // TODO: read @property tags of class