From 9a40d925f82cccac2d866a64896e23e696538aac Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Thu, 8 Dec 2016 01:56:33 +0100 Subject: [PATCH] Fix lint issue --- src/FilesFinder/ClientFilesFinder.php | 10 ++-- src/FilesFinder/FileSystemFilesFinder.php | 11 +++-- src/FilesFinder/FilesFinder.php | 6 +-- src/LanguageServer.php | 47 +++++++++++-------- src/Project.php | 18 ++----- tests/NodeVisitor/DefinitionCollectorTest.php | 5 +- tests/PhpDocumentTest.php | 3 +- tests/ProjectTest.php | 3 +- tests/Server/ServerTestCase.php | 3 +- tests/Server/TextDocument/CompletionTest.php | 3 +- .../Definition/GlobalFallbackTest.php | 3 +- tests/Server/TextDocument/DidChangeTest.php | 3 +- tests/Server/TextDocument/DidCloseTest.php | 3 +- tests/Server/TextDocument/FormattingTest.php | 5 +- tests/Server/TextDocument/ParseErrorsTest.php | 3 +- .../References/GlobalFallbackTest.php | 3 +- 16 files changed, 69 insertions(+), 60 deletions(-) diff --git a/src/FilesFinder/ClientFilesFinder.php b/src/FilesFinder/ClientFilesFinder.php index b8ace99..4315ede 100644 --- a/src/FilesFinder/ClientFilesFinder.php +++ b/src/FilesFinder/ClientFilesFinder.php @@ -1,10 +1,12 @@ The URIs */ - private function find(string $glob): Promise + public function find(string $glob): Promise { - return $this->client->workspace->xfiles()->then(function (array $textDocuments) { + return $this->client->workspace->xfiles()->then(function (array $textDocuments) use ($glob) { $uris = []; foreach ($textDocuments as $textDocument) { $path = Uri\parse($textDocument->uri)['path']; - if (Glob::match($path, $pattern)) { + if (Glob::match($path, $glob)) { $uris[] = $textDocument->uri; } } diff --git a/src/FilesFinder/FileSystemFilesFinder.php b/src/FilesFinder/FileSystemFilesFinder.php index 5cf3541..52df4b6 100644 --- a/src/FilesFinder/FileSystemFilesFinder.php +++ b/src/FilesFinder/FileSystemFilesFinder.php @@ -3,15 +3,16 @@ declare(strict_types = 1); namespace LanguageServer\FilesFinder; -use Sabre\Event\Promise; -use function LanguageServer\{uriToPath, timeout}; use Webmozart\Glob\Iterator\GlobIterator; +use Sabre\Event\Promise; +use function Sabre\Event\coroutine; +use function LanguageServer\{pathToUri, timeout}; -class FileSystemFindFinder implements FilesFinder +class FileSystemFilesFinder implements FilesFinder { /** * Returns all files in the workspace that match a glob. - * If the client does not support workspace/files, it falls back to searching the file system directly. + * If the client does not support workspace/xfiles, it falls back to searching the file system directly. * * @param string $glob * @return Promise @@ -20,7 +21,7 @@ class FileSystemFindFinder implements FilesFinder { return coroutine(function () use ($glob) { $uris = []; - foreach (new GlobIterator($pattern) as $path) { + foreach (new GlobIterator($glob) as $path) { $uris[] = pathToUri($path); yield timeout(); } diff --git a/src/FilesFinder/FilesFinder.php b/src/FilesFinder/FilesFinder.php index 9822856..81d6de5 100644 --- a/src/FilesFinder/FilesFinder.php +++ b/src/FilesFinder/FilesFinder.php @@ -1,18 +1,18 @@ diff --git a/src/LanguageServer.php b/src/LanguageServer.php index d579bf5..6cda587 100644 --- a/src/LanguageServer.php +++ b/src/LanguageServer.php @@ -15,6 +15,7 @@ use LanguageServer\Protocol\{ CompletionOptions }; use LanguageServer\FilesFinder\{FilesFinder, ClientFilesFinder, FileSystemFilesFinder}; +use LanguageServer\ContentRetriever\{ContentRetriever, ClientContentRetriever, FileSystemContentRetriever}; use AdvancedJsonRpc; use Sabre\Event\{Loop, Promise}; use function Sabre\Event\coroutine; @@ -44,11 +45,6 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher public $completionItem; public $codeLens; - /** - * ClientCapabilities - */ - private $clientCapabilities; - private $protocolReader; private $protocolWriter; private $client; @@ -66,6 +62,11 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher */ private $filesFinder; + /** + * @var ContentRetriever + */ + private $contentRetrieverFinder; + public function __construct(ProtocolReader $reader, ProtocolWriter $writer) { parent::__construct($this, '/'); @@ -111,11 +112,6 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher }); $this->protocolWriter = $writer; $this->client = new LanguageClient($reader, $writer); - if ($this->clientCapabilities->xfilesProvider) { - $this->filesFinder = new ClientFilesFinder($this->client); - } else { - $this->filesFinder = new FileSystemFilesFinder; - } } /** @@ -129,8 +125,20 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher public function initialize(ClientCapabilities $capabilities, string $rootPath = null, int $processId = null): InitializeResult { $this->rootPath = $rootPath; - $this->clientCapabilities = $capabilities; - $this->project = new Project($this->client, $capabilities); + + if ($capabilities->xfilesProvider) { + $this->filesFinder = new ClientFilesFinder($this->client); + } else { + $this->filesFinder = new FileSystemFilesFinder; + } + + if ($capabilities->xcontentProvider) { + $this->contentRetriever = new ClientContentRetriever($this->client); + } else { + $this->contentRetriever = new FileSystemContentRetriever; + } + + $this->project = new Project($this->client, $this->contentRetriever); $this->textDocument = new Server\TextDocument($this->project, $this->client); $this->workspace = new Server\Workspace($this->project, $this->client); @@ -193,29 +201,29 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher { return coroutine(function () { $pattern = Path::makeAbsolute('**/*.php', $this->rootPath); - $textDocuments = yield $this->filesFinder->find($pattern); - $count = count($textDocuments); + $uris = yield $this->filesFinder->find($pattern); + $count = count($uris); $startTime = microtime(true); - foreach ($textDocuments as $i => $textDocument) { + foreach ($uris as $i => $uri) { // Give LS to the chance to handle requests while indexing yield timeout(); $this->client->window->logMessage( MessageType::LOG, - "Parsing file $i/$count: {$textDocument->uri}" + "Parsing file $i/$count: {$uri}" ); try { - yield $this->project->loadDocument($textDocument->uri); + yield $this->project->loadDocument($uri); } catch (ContentTooLargeException $e) { $this->client->window->logMessage( MessageType::INFO, - "Ignoring file {$textDocument->uri} because it exceeds size limit of {$e->limit} bytes ({$e->size})" + "Ignoring file {$uri} because it exceeds size limit of {$e->limit} bytes ({$e->size})" ); } catch (Exception $e) { $this->client->window->logMessage( MessageType::ERROR, - "Error parsing file {$textDocument->uri}: " . (string)$e + "Error parsing file {$uri}: " . (string)$e ); } } @@ -228,5 +236,4 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher ); }); } - } diff --git a/src/Project.php b/src/Project.php index b62b295..0582301 100644 --- a/src/Project.php +++ b/src/Project.php @@ -5,7 +5,7 @@ namespace LanguageServer; use LanguageServer\Protocol\{SymbolInformation, TextDocumentIdentifier, ClientCapabilities}; use phpDocumentor\Reflection\DocBlockFactory; -use LanguageServer\ContentRetriever\{ContentRetriever, ClientContentRetriever, FileSystemContentRetriever}; +use LanguageServer\ContentRetriever\ContentRetriever; use Sabre\Event\Promise; use function Sabre\Event\coroutine; @@ -61,13 +61,6 @@ class Project */ private $client; - /** - * The client's capabilities - * - * @var ClientCapabilities - */ - private $clientCapabilities; - /** * The content retriever * @@ -75,18 +68,13 @@ class Project */ private $contentRetriever; - public function __construct(LanguageClient $client, ClientCapabilities $clientCapabilities) + public function __construct(LanguageClient $client, ContentRetriever $contentRetriever) { $this->client = $client; - $this->clientCapabilities = $clientCapabilities; $this->parser = new Parser; $this->docBlockFactory = DocBlockFactory::createInstance(); $this->definitionResolver = new DefinitionResolver($this); - if ($clientCapabilities->xcontentProvider) { - $this->contentRetriever = new ClientContentRetriever($client); - } else { - $this->contentRetriever = new FileSystemContentRetriever; - } + $this->contentRetriever = $contentRetriever; } /** diff --git a/tests/NodeVisitor/DefinitionCollectorTest.php b/tests/NodeVisitor/DefinitionCollectorTest.php index 74e0d5c..800373d 100644 --- a/tests/NodeVisitor/DefinitionCollectorTest.php +++ b/tests/NodeVisitor/DefinitionCollectorTest.php @@ -7,6 +7,7 @@ use PHPUnit\Framework\TestCase; use PhpParser\{NodeTraverser, Node}; use PhpParser\NodeVisitor\NameResolver; use LanguageServer\{LanguageClient, Project, PhpDocument, Parser, DefinitionResolver}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\ClientCapabilities; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\NodeVisitor\{ReferencesAdder, DefinitionCollector}; @@ -17,7 +18,7 @@ class DefinitionCollectorTest extends TestCase public function testCollectsSymbols() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $parser = new Parser; $uri = pathToUri(realpath(__DIR__ . '/../../fixtures/symbols.php')); $document = $project->loadDocument($uri)->wait(); @@ -57,7 +58,7 @@ class DefinitionCollectorTest extends TestCase public function testDoesNotCollectReferences() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $parser = new Parser; $uri = pathToUri(realpath(__DIR__ . '/../../fixtures/references.php')); $document = $project->loadDocument($uri)->wait(); diff --git a/tests/PhpDocumentTest.php b/tests/PhpDocumentTest.php index 057551e..a4e8ffa 100644 --- a/tests/PhpDocumentTest.php +++ b/tests/PhpDocumentTest.php @@ -7,6 +7,7 @@ use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{LanguageClient, Project}; use LanguageServer\NodeVisitor\NodeAtPositionFinder; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{SymbolKind, Position, ClientCapabilities}; use PhpParser\Node; @@ -20,7 +21,7 @@ class PhpDocumentTest extends TestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $this->project = new Project($client, new ClientCapabilities); + $this->project = new Project($client, new FileSystemContentRetriever); } public function testParsesVariableVariables() diff --git a/tests/ProjectTest.php b/tests/ProjectTest.php index 161370c..6fef176 100644 --- a/tests/ProjectTest.php +++ b/tests/ProjectTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, Client, LanguageClient, Project, PhpDocument}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{ TextDocumentItem, TextDocumentIdentifier, @@ -27,7 +28,7 @@ class ProjectTest extends TestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $this->project = new Project($client, new ClientCapabilities); + $this->project = new Project($client, new FileSystemContentRetriever); } public function testGetOrLoadDocumentLoadsDocument() diff --git a/tests/Server/ServerTestCase.php b/tests/Server/ServerTestCase.php index 23d1763..38e2c8a 100644 --- a/tests/Server/ServerTestCase.php +++ b/tests/Server/ServerTestCase.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, LanguageClient, Project}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{Position, Location, Range, ClientCapabilities}; use function LanguageServer\pathToUri; use Sabre\Event\Promise; @@ -44,7 +45,7 @@ abstract class ServerTestCase extends TestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $this->project = new Project($client, new ClientCapabilities); + $this->project = new Project($client, new FileSystemContentRetriever); $this->textDocument = new Server\TextDocument($this->project, $client); $this->workspace = new Server\Workspace($this->project, $client); diff --git a/tests/Server/TextDocument/CompletionTest.php b/tests/Server/TextDocument/CompletionTest.php index f32503c..587f171 100644 --- a/tests/Server/TextDocument/CompletionTest.php +++ b/tests/Server/TextDocument/CompletionTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, LanguageClient, Project, CompletionProvider}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{ TextDocumentIdentifier, TextEdit, @@ -33,7 +34,7 @@ class CompletionTest extends TestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $this->project = new Project($client, new ClientCapabilities); + $this->project = new Project($client, new FileSystemContentRetriever); $this->project->loadDocument(pathToUri(__DIR__ . '/../../../fixtures/global_symbols.php'))->wait(); $this->project->loadDocument(pathToUri(__DIR__ . '/../../../fixtures/symbols.php'))->wait(); $this->textDocument = new Server\TextDocument($this->project, $client); diff --git a/tests/Server/TextDocument/Definition/GlobalFallbackTest.php b/tests/Server/TextDocument/Definition/GlobalFallbackTest.php index c4b021d..20ea70b 100644 --- a/tests/Server/TextDocument/Definition/GlobalFallbackTest.php +++ b/tests/Server/TextDocument/Definition/GlobalFallbackTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument\Definition; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\Tests\Server\ServerTestCase; use LanguageServer\{Server, LanguageClient, Project}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{TextDocumentIdentifier, Position, Range, Location, ClientCapabilities}; use Sabre\Event\Promise; @@ -14,7 +15,7 @@ class GlobalFallbackTest extends ServerTestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $this->textDocument = new Server\TextDocument($project, $client); $project->openDocument('global_fallback', file_get_contents(__DIR__ . '/../../../../fixtures/global_fallback.php')); $project->openDocument('global_symbols', file_get_contents(__DIR__ . '/../../../../fixtures/global_symbols.php')); diff --git a/tests/Server/TextDocument/DidChangeTest.php b/tests/Server/TextDocument/DidChangeTest.php index 1df0505..9df301a 100644 --- a/tests/Server/TextDocument/DidChangeTest.php +++ b/tests/Server/TextDocument/DidChangeTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, Client, LanguageClient, Project}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{ TextDocumentIdentifier, TextDocumentItem, @@ -21,7 +22,7 @@ class DidChangeTest extends TestCase public function test() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $textDocument = new Server\TextDocument($project, $client); $phpDocument = $project->openDocument('whatever', "openDocument('whatever', 'hello world'); diff --git a/tests/Server/TextDocument/FormattingTest.php b/tests/Server/TextDocument/FormattingTest.php index b7d0609..32aee22 100644 --- a/tests/Server/TextDocument/FormattingTest.php +++ b/tests/Server/TextDocument/FormattingTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, Client, LanguageClient, Project}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{ TextDocumentIdentifier, TextDocumentItem, @@ -27,14 +28,14 @@ class FormattingTest extends TestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $this->textDocument = new Server\TextDocument($project, $client); } public function testFormatting() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $textDocument = new Server\TextDocument($project, $client); $path = realpath(__DIR__ . '/../../../fixtures/format.php'); $uri = pathToUri($path); diff --git a/tests/Server/TextDocument/ParseErrorsTest.php b/tests/Server/TextDocument/ParseErrorsTest.php index 2a02efe..af2bdd8 100644 --- a/tests/Server/TextDocument/ParseErrorsTest.php +++ b/tests/Server/TextDocument/ParseErrorsTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, Client, LanguageClient, Project, ClientHandler}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{TextDocumentIdentifier, TextDocumentItem, DiagnosticSeverity, ClientCapabilities}; use Sabre\Event\Promise; use JsonMapper; @@ -35,7 +36,7 @@ class ParseErrorsTest extends TestCase return Promise\resolve(null); } }; - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $this->textDocument = new Server\TextDocument($project, $client); } diff --git a/tests/Server/TextDocument/References/GlobalFallbackTest.php b/tests/Server/TextDocument/References/GlobalFallbackTest.php index 9f68cb9..4e6d07a 100644 --- a/tests/Server/TextDocument/References/GlobalFallbackTest.php +++ b/tests/Server/TextDocument/References/GlobalFallbackTest.php @@ -6,6 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument\References; use PHPUnit\Framework\TestCase; use LanguageServer\Tests\MockProtocolStream; use LanguageServer\{Server, LanguageClient, Project}; +use LanguageServer\ContentRetriever\FileSystemContentRetriever; use LanguageServer\Protocol\{TextDocumentIdentifier, Position, ReferenceContext, Location, Range, ClientCapabilities}; use LanguageServer\Tests\Server\ServerTestCase; @@ -14,7 +15,7 @@ class GlobalFallbackTest extends ServerTestCase public function setUp() { $client = new LanguageClient(new MockProtocolStream, new MockProtocolStream); - $project = new Project($client, new ClientCapabilities); + $project = new Project($client, new FileSystemContentRetriever); $this->textDocument = new Server\TextDocument($project, $client); $project->openDocument('global_fallback', file_get_contents(__DIR__ . '/../../../../fixtures/global_fallback.php')); $project->openDocument('global_symbols', file_get_contents(__DIR__ . '/../../../../fixtures/global_symbols.php'));