1
0
Fork 0

Fix namespace name, use variable issues

pull/357/head
Sara Itani 2017-04-16 16:32:38 -07:00
parent 54f385f9ec
commit 65686c6d4c
4 changed files with 11 additions and 10 deletions

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;

View File

@ -0,0 +1,2 @@
<?php
namespace A \ B;