From 4186d8f9ceb252f366a1458ae9e8a8c7c0993787 Mon Sep 17 00:00:00 2001 From: Philip Nelson Date: Sun, 10 Dec 2017 22:07:43 +1100 Subject: [PATCH] return class containing self instead of self --- src/DefinitionResolver.php | 4 +++- tests/Server/TextDocument/CompletionTest.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index 5839f71..5ffa904 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -1064,7 +1064,9 @@ class DefinitionResolver // Resolve a string like "bool" to a type object return $this->typeResolver->resolve($node->returnType->getText($node->getFileContents())); } elseif ($node->returnType->getResolvedName() === 'self') { - return new Types\Self_(); + $classNode = $node->getFirstAncestor(Node\Statement\ClassDeclaration::class); + $classFqn = (string)$classNode->getNamespacedName(); + return new Types\Object_(new Fqsen('\\' . $classFqn)); } return new Types\Object_(new Fqsen('\\' . (string)$node->returnType->getResolvedName())); } diff --git a/tests/Server/TextDocument/CompletionTest.php b/tests/Server/TextDocument/CompletionTest.php index 4e63e75..ac6f330 100644 --- a/tests/Server/TextDocument/CompletionTest.php +++ b/tests/Server/TextDocument/CompletionTest.php @@ -588,7 +588,7 @@ class CompletionTest extends TestCase new CompletionItem( 'foo', CompletionItemKind::METHOD, - 'self', + '\FooClass', null, null, null,