1
0
Fork 0

moved this autocomplete fix to DefinitionResolver

pull/247/head
Ivan Bozhanov 2017-01-19 14:59:12 +02:00
parent 618f060648
commit 975485535e
2 changed files with 7 additions and 12 deletions

View File

@ -140,18 +140,9 @@ class CompletionProvider
) { ) {
// If the name is an Error node, just filter by the class // If the name is an Error node, just filter by the class
if ($node instanceof Node\Expr\MethodCall || $node instanceof Node\Expr\PropertyFetch) { if ($node instanceof Node\Expr\MethodCall || $node instanceof Node\Expr\PropertyFetch) {
// For instances, resolve the variable type $prefixes = DefinitionResolver::getFqnsFromType(
$classNode = null; $this->definitionResolver->resolveExpressionNodeToType($node->var)
if ($node->var instanceof Node\Expr\Variable && $node->var->name === 'this') { );
$classNode = getClosestNode($node, Node\Stmt\Class_::class);
}
if ($classNode !== null && !$classNode->isAnonymous()) {
$prefixes = [(string)$classNode->namespacedName];
} else {
$prefixes = DefinitionResolver::getFqnsFromType(
$this->definitionResolver->resolveExpressionNodeToType($node->var)
);
}
} else { } else {
// Static member reference // Static member reference
$prefixes = [$node->class instanceof Node\Name ? (string)$node->class : '']; $prefixes = [$node->class instanceof Node\Name ? (string)$node->class : ''];

View File

@ -417,6 +417,10 @@ class DefinitionResolver
{ {
if ($expr instanceof Node\Expr\Variable || $expr instanceof Node\Expr\ClosureUse) { if ($expr instanceof Node\Expr\Variable || $expr instanceof Node\Expr\ClosureUse) {
if ($expr instanceof Node\Expr\Variable && $expr->name === 'this') { if ($expr instanceof Node\Expr\Variable && $expr->name === 'this') {
$classNode = getClosestNode($expr, Node\Stmt\Class_::class);
if ($classNode) {
return self::resolveClassNameToType($classNode->namespacedName);
}
return new Types\This; return new Types\This;
} }
// Find variable definition // Find variable definition