From 975485535e1f7e688d693259beff28ec52455e04 Mon Sep 17 00:00:00 2001 From: Ivan Bozhanov Date: Thu, 19 Jan 2017 14:59:12 +0200 Subject: [PATCH] moved this autocomplete fix to DefinitionResolver --- src/CompletionProvider.php | 15 +++------------ src/DefinitionResolver.php | 4 ++++ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index d24162c..b2beb41 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -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 : '']; diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index d1f756e..87ab68a 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -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