diff --git a/src/Server/TextDocument.php b/src/Server/TextDocument.php index 84103df..d5c9323 100644 --- a/src/Server/TextDocument.php +++ b/src/Server/TextDocument.php @@ -209,7 +209,10 @@ class TextDocument // Definition with a global FQN $fqn = DefinitionResolver::getDefinedFqn($node); if ($fqn === null) { - return []; + $fqn = $this->definitionResolver->resolveReferenceNodeToFqn($node); + if ($fqn === null) { + return []; + } } $refDocuments = yield Promise\all(array_map( [$this->documentLoader, 'getOrLoad'], diff --git a/tests/Server/TextDocument/References/GlobalTest.php b/tests/Server/TextDocument/References/GlobalTest.php index bf6eb97..4febaf3 100644 --- a/tests/Server/TextDocument/References/GlobalTest.php +++ b/tests/Server/TextDocument/References/GlobalTest.php @@ -146,4 +146,17 @@ class GlobalTest extends ServerTestCase new Location($referencesUri, new Range(new Position(31, 13), new Position(31, 40))) ], $result); } + + public function testReferencesForReference() + { + // $obj = new TestClass(); + // Get references for TestClass + $reference = $this->getReferenceLocations('TestClass')[0]; + $result = $this->textDocument->references( + new ReferenceContext, + new TextDocumentIdentifier($reference->uri), + $reference->range->start + )->wait(); + $this->assertEquals($this->getReferenceLocations('TestClass'), $result); + } }