moved this autocomplete fix to DefinitionResolver
parent
618f060648
commit
975485535e
|
@ -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
|
|
||||||
$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(
|
$prefixes = DefinitionResolver::getFqnsFromType(
|
||||||
$this->definitionResolver->resolveExpressionNodeToType($node->var)
|
$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 : ''];
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue