From 65686c6d4c7dcef8815d8677c394fea56e1a5016 Mon Sep 17 00:00:00 2001 From: Sara Itani Date: Sun, 16 Apr 2017 16:32:38 -0700 Subject: [PATCH] Fix namespace name, use variable issues --- src/DefinitionResolver.php | 3 --- src/Server/TextDocument.php | 1 - src/TolerantDefinitionResolver.php | 15 +++++++++------ validation/frameworks/broken/namespaces6.php | 2 ++ 4 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 validation/frameworks/broken/namespaces6.php diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index e3dc20d..3d3a360 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -777,9 +777,6 @@ class DefinitionResolver implements DefinitionResolverInterface && !empty($varTags = $docBlock->getTagsByName('var')) && ($type = $varTags[0]->getType()) ) { - if ((string)$type === "\\TestNamespace\\TestClass") { - var_dump($type); - } return $type; } // Resolve the expression diff --git a/src/Server/TextDocument.php b/src/Server/TextDocument.php index 56af13f..b479317 100644 --- a/src/Server/TextDocument.php +++ b/src/Server/TextDocument.php @@ -220,7 +220,6 @@ class TextDocument if ($descendantNode instanceof Tolerant\Node\Expression\Variable && $descendantNode->getName() === $node->getName() ) { - var_dump($descendantNode->getName()); $locations[] = Location::fromNode($descendantNode); } } diff --git a/src/TolerantDefinitionResolver.php b/src/TolerantDefinitionResolver.php index 36207d6..c0c474b 100644 --- a/src/TolerantDefinitionResolver.php +++ b/src/TolerantDefinitionResolver.php @@ -501,7 +501,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface // When a use is passed, start outside the closure to not return immediately // Use variable vs variable parsing? if ($var instanceof Tolerant\Node\UseVariableName) { - $n = $var->getFirstAncestor(Tolerant\Node\Expression\AnonymousFunctionCreationExpression::class); + $n = $var->getFirstAncestor(Tolerant\Node\Expression\AnonymousFunctionCreationExpression::class)->parent; $name = $var->getName(); } else if ($var instanceof Tolerant\Node\Expression\Variable || $var instanceof Tolerant\Node\Parameter) { $name = $var->getName(); @@ -521,8 +521,11 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface } } // If it is a closure, also check use statements - if ($n instanceof Tolerant\Node\Expression\AnonymousFunctionCreationExpression && $n->anonymousFunctionUseClause !== null && $n->anonymousFunctionUseClause->useVariableNameList !== null) { - foreach ($n->anonymousFunctionUseClause->useVariableNameList->getElements() as $use) { + if ($n instanceof Tolerant\Node\Expression\AnonymousFunctionCreationExpression && + $n->anonymousFunctionUseClause !== null && + $n->anonymousFunctionUseClause->useVariableNameList !== null) { + foreach ($n->anonymousFunctionUseClause->useVariableNameList->getElements() as $use + ) { if ($use->getName() === $name) { return $use; } @@ -587,7 +590,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface } // Find variable definition $defNode = $this->resolveVariableToNode($expr); - if ($defNode instanceof Tolerant\Node\Expression) { + if ($defNode instanceof Tolerant\Node\Expression || $defNode instanceof Tolerant\Node\UseVariableName) { return $this->resolveExpressionNodeToType($defNode); } if ($defNode instanceof Tolerant\Node\Parameter) { @@ -874,7 +877,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface return new Types\Object_; } $className = (string)$class->getResolvedName(); - var_dump($className); + if ($className === 'static') { return new Types\Static_; } @@ -1056,7 +1059,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface // INPUT OUTPUT: // namespace A\B; A\B else if ($node instanceof Tolerant\Node\Statement\NamespaceDefinition && $node->name instanceof Tolerant\Node\QualifiedName) { - return (string) $node->name; + return (string) Tolerant\ResolvedName::buildName($node->name->nameParts, $node->getFileContents()); } // INPUT OUTPUT: // namespace A\B; diff --git a/validation/frameworks/broken/namespaces6.php b/validation/frameworks/broken/namespaces6.php new file mode 100644 index 0000000..198691d --- /dev/null +++ b/validation/frameworks/broken/namespaces6.php @@ -0,0 +1,2 @@ +