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 ($node instanceof Node\Expr\MethodCall || $node instanceof Node\Expr\PropertyFetch) {
// For instances, resolve the variable type
$classNode = null;
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)
);
}
$prefixes = DefinitionResolver::getFqnsFromType(
$this->definitionResolver->resolveExpressionNodeToType($node->var)
);
} else {
// Static member reference
$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->name === 'this') {
$classNode = getClosestNode($expr, Node\Stmt\Class_::class);
if ($classNode) {
return self::resolveClassNameToType($classNode->namespacedName);
}
return new Types\This;
}
// Find variable definition