From df1444502ce83f41dcb8985d46d92c4ae50888dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Let=C3=A1=C4=8Dek?= Date: Sun, 28 Oct 2018 21:00:00 +0100 Subject: [PATCH] ci: Add ability to find documentation for static functions defined in parent contexts --- src/DefinitionResolver.php | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index 3a4f378..c1c7623 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -493,21 +493,33 @@ class DefinitionResolver } elseif ($scoped->scopeResolutionQualifier instanceof Node\QualifiedName) { $className = $scoped->scopeResolutionQualifier->getResolvedName(); } - if ($scoped->memberName instanceof Node\Expression\Variable) { + do { + if ($scoped->memberName instanceof Node\Expression\Variable) { + if ($scoped->parent instanceof Node\Expression\CallExpression) { + return null; + } + $memberName = $scoped->memberName->getName(); + if (empty($memberName)) { + return null; + } + $name = (string)$className . '::$' . $memberName; + } else { + $name = (string)$className . '::' . $scoped->memberName->getText($scoped->getFileContents()); + } if ($scoped->parent instanceof Node\Expression\CallExpression) { - return null; + $name .= '()'; } - $memberName = $scoped->memberName->getName(); - if (empty($memberName)) { - return null; + $definition = $this->index->getDefinition($name); + if(!!$definition) { + break; + } else { + $class = $this->index->getDefinition((string)$className); + if(!$class) { + break; + } + $className = $class->extends[0]; } - $name = (string)$className . '::$' . $memberName; - } else { - $name = (string)$className . '::' . $scoped->memberName->getText($scoped->getFileContents()); - } - if ($scoped->parent instanceof Node\Expression\CallExpression) { - $name .= '()'; - } + } while (true); return $name; }