diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index bbf9076..64c16d4 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -725,6 +725,19 @@ class DefinitionResolver */ public function getTypeFromNode(Node $node) { + if ( + $node instanceof Node\Expr\FuncCall + && $node->name instanceof Node\Name + && strtolower((string)$node->name) === 'define' + && isset($node->args[0]) + && $node->args[0]->value instanceof Node\Scalar\String_ + && isset($node->args[1]) + ) { + // constants with define() like + // define('TEST_DEFINE_CONSTANT', false); + return $this->resolveExpressionNodeToType($node->args[1]->value); + } + if ($node instanceof Node\Param) { // Parameters $docBlock = $node->getAttribute('parentNode')->getAttribute('docBlock'); @@ -883,7 +896,7 @@ class DefinitionResolver return (string)$class->namespacedName . '::' . $node->name; } } else if ($node instanceof Node\Expr\FuncCall && $node->name instanceof Node\Name && strtolower((string)$node->name) === 'define') { - if (!isset($node->args[0]) || !($node->args[0]->value instanceof Node\Scalar\String_)) { + if (!isset($node->args[0]) || !($node->args[0]->value instanceof Node\Scalar\String_) || !isset($node->args[1])) { return null; } return (string)$node->args[0]->value->value; diff --git a/src/Protocol/SymbolInformation.php b/src/Protocol/SymbolInformation.php index 4fb1d3f..da04404 100644 --- a/src/Protocol/SymbolInformation.php +++ b/src/Protocol/SymbolInformation.php @@ -57,6 +57,7 @@ class SymbolInformation && strtolower((string)$node->name) === 'define' && isset($node->args[0]) && $node->args[0]->value instanceof Node\Scalar\String_ + && isset($node->args[1]) ) { // constants with define() like // define('TEST_DEFINE_CONSTANT', false); @@ -90,7 +91,7 @@ class SymbolInformation } else { return null; } - + if (!isset($symbol->name)) { if ($node instanceof Node\Name) { $symbol->name = (string)$node;