From 035a7856f2f8076aa37b320fca82e0e668945dc3 Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 11:52:05 +0100 Subject: [PATCH 1/6] Add support for file events --- bin/serve.php | 5 ++ lib/Core/Server/Client/ClientClient.php | 9 +- lib/Event/FilesChanged.php | 23 +++++ .../DidChangeWatchedFilesHandler.php | 83 +++++++++++++++++++ lib/LanguageServerTesterBuilder.php | 32 +++++++ .../RecordingListenerProvider.php | 46 ++++++++++ tests/Unit/Core/Server/ClientApiTest.php | 4 +- tests/Unit/Handler/HandlerTestCase.php | 7 ++ .../DidChangeWatchedFilesHandlerTest.php | 56 +++++++++++++ 9 files changed, 259 insertions(+), 6 deletions(-) create mode 100644 lib/Event/FilesChanged.php create mode 100644 lib/Handler/Workspace/DidChangeWatchedFilesHandler.php create mode 100644 lib/Test/ListenerProvider/RecordingListenerProvider.php create mode 100644 tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php diff --git a/bin/serve.php b/bin/serve.php index a9009d49..99e07cc0 100755 --- a/bin/serve.php +++ b/bin/serve.php @@ -23,6 +23,7 @@ use Phpactor\LanguageServer\Example\Command\SayHelloCommand; use Phpactor\LanguageServer\Example\Diagnostics\SayHelloDiagnosticsProvider; use Phpactor\LanguageServer\Handler\TextDocument\CodeActionHandler; +use Phpactor\LanguageServer\Handler\Workspace\DidChangeWatchedFilesHandler; use Phpactor\LanguageServer\Listener\ServiceListener; use Phpactor\LanguageServer\Core\Service\ServiceManager; use Phpactor\LanguageServer\Core\Service\ServiceProviders; @@ -38,6 +39,7 @@ use Phpactor\LanguageServer\Middleware\HandlerMiddleware; use Phpactor\LanguageServer\Middleware\InitializeMiddleware; use Phpactor\LanguageServer\Core\Command\CommandDispatcher; +use Phpactor\LanguageServer\Middleware\ResponseHandlingMiddleware; use Phpactor\LanguageServer\Service\DiagnosticsService; use Psr\Log\AbstractLogger; use function Safe\fopen; @@ -107,6 +109,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) use ($logge $eventDispatcher = new AggregateEventDispatcher( new ServiceListener($serviceManager), new WorkspaceListener($workspace), + new DidChangeWatchedFilesHandler($clientApi, ['**/*.php']), $diagnosticsService ); @@ -117,6 +120,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) use ($logge new CommandHandler(new CommandDispatcher([ 'phpactor.say_hello' => new SayHelloCommand($clientApi) ])), + new DidChangeWatchedFilesHandler($clientApi, ['**/*.php']), new CodeActionHandler(new AggregateCodeActionProvider( new SayHelloCodeActionProvider() ), $workspace), @@ -137,6 +141,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) use ($logge 'version' => 1, ]), new CancellationMiddleware($runner), + new ResponseHandlingMiddleware($responseWatcher), new HandlerMiddleware($runner) ); } diff --git a/lib/Core/Server/Client/ClientClient.php b/lib/Core/Server/Client/ClientClient.php index 959652d5..92fa3fa0 100644 --- a/lib/Core/Server/Client/ClientClient.php +++ b/lib/Core/Server/Client/ClientClient.php @@ -2,6 +2,7 @@ namespace Phpactor\LanguageServer\Core\Server\Client; +use Amp\Promise; use Phpactor\LanguageServerProtocol\Registration; use Phpactor\LanguageServerProtocol\Unregistration; use Phpactor\LanguageServer\Core\Server\RpcClient; @@ -18,16 +19,16 @@ public function __construct(RpcClient $client) $this->client = $client; } - public function registerCapability(Registration ...$registrations): void + public function registerCapability(Registration ...$registrations): Promise { - $this->client->notification('client/registerCapability', [ + return $this->client->request('client/registerCapability', [ 'registrations' => $registrations ]); } - public function unregisterCapability(Unregistration ...$unregistrations): void + public function unregisterCapability(Unregistration ...$unregistrations): Promise { - $this->client->notification('client/unregisterCapability', [ + return $this->client->request('client/unregisterCapability', [ 'unregistrations' => $unregistrations ]); } diff --git a/lib/Event/FilesChanged.php b/lib/Event/FilesChanged.php new file mode 100644 index 00000000..8498190f --- /dev/null +++ b/lib/Event/FilesChanged.php @@ -0,0 +1,23 @@ +events = $events; + } + + public function events(): array + { + return $this->events; + } +} diff --git a/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php new file mode 100644 index 00000000..2de767df --- /dev/null +++ b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php @@ -0,0 +1,83 @@ +client = $client; + $this->globPatterns = $globPatterns; + $this->dispatcher = $dispatcher; + } + + /** + * {@inheritDoc} + */ + public function getListenersForEvent(object $event): iterable + { + if ($event instanceof Initialized) { + return [[$this, 'registerCapability']]; + } + + return []; + } + + public function registerCapability(Initialized $initialized): void + { + asyncCall(function () { + yield $this->client->client()->registerCapability( + new Registration( + Uuid::uuid4()->__toString(), + 'workspace/didChangeWatchedFiles', + new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { + return new FileSystemWatcher($glob); + }, $this->globPatterns)) + )); + }); + } + + /** + * {@inheritDoc} + */ + public function methods(): array + { + return [ + 'workspace/didChangeWatchedFiles' => 'didChange' + ]; + } + + public function didChange(DidChangeWatchedFilesParams $params) + { + $this->dispatcher->dispatch(new FilesChanged(...$params->changes)); + } +} diff --git a/lib/LanguageServerTesterBuilder.php b/lib/LanguageServerTesterBuilder.php index 2f6ea815..77163c1c 100644 --- a/lib/LanguageServerTesterBuilder.php +++ b/lib/LanguageServerTesterBuilder.php @@ -25,6 +25,7 @@ use Phpactor\LanguageServer\Handler\System\ServiceHandler; use Phpactor\LanguageServer\Handler\TextDocument\TextDocumentHandler; use Phpactor\LanguageServer\Handler\Workspace\CommandHandler; +use Phpactor\LanguageServer\Handler\Workspace\DidChangeWatchedFilesHandler; use Phpactor\LanguageServer\Listener\ServiceListener; use Phpactor\LanguageServer\Listener\WorkspaceListener; use Phpactor\LanguageServer\Middleware\HandlerMiddleware; @@ -108,6 +109,11 @@ final class LanguageServerTesterBuilder */ private $enableServices = false; + /** + * @var bool + */ + private $enableFileEvents = false; + /** * @var bool */ @@ -128,6 +134,8 @@ final class LanguageServerTesterBuilder */ private $diagnosticsProvider = []; + private $fileEventGlobs = ['**/*.php']; + private function __construct() { $this->initializeParams = new InitializeParams(new ClientCapabilities()); @@ -224,6 +232,21 @@ public function enableTextDocuments(): self return $this; } + /** + * Enable file events + * @param string[] $globs + */ + public function enableFileEvents(?array $globs = null): self + { + $this->enableFileEvents = true; + + if (null !==$globs) { + $this->fileEventGlobs = $globs; + } + + return $this; + } + /** * Enable the services (enabled by default with ::create) */ @@ -326,6 +349,15 @@ function (MessageTransmitter $transmitter, InitializeParams $params) { $handlers[] = new ServiceHandler($serviceManager, $this->clientApi); } + if ($this->enableFileEvents) { + $handlers = (function (array $handlers) use ($eventDispatcher) { + $handler = new DidChangeWatchedFilesHandler($this->clientApi, $eventDispatcher, $this->fileEventGlobs); + $handlers[] = $handler; + $this->listeners[] = $handler; + return $handlers; + })($handlers); + } + if ($this->enableCommands) { $handlers[] = new CommandHandler(new CommandDispatcher($this->commands)); } diff --git a/lib/Test/ListenerProvider/RecordingListenerProvider.php b/lib/Test/ListenerProvider/RecordingListenerProvider.php new file mode 100644 index 00000000..02681ea0 --- /dev/null +++ b/lib/Test/ListenerProvider/RecordingListenerProvider.php @@ -0,0 +1,46 @@ +recieved[] = $event; + } + ]; + } + + /** + * @templtae T of class-string + * @param T $type + * @return T + */ + public function shift(string $type): object + { + $next = array_shift($this->recieved); + + if (null === $next) { + throw new RuntimeException('No more events'); + } + + if (!$next instanceof $type) { + throw new RuntimeException(sprintf( + 'Expected event of type "%s" but got "%s"', + $type, get_class($next) + )); + } + + return $next; + } +} diff --git a/tests/Unit/Core/Server/ClientApiTest.php b/tests/Unit/Core/Server/ClientApiTest.php index f676fd66..f13019e9 100644 --- a/tests/Unit/Core/Server/ClientApiTest.php +++ b/tests/Unit/Core/Server/ClientApiTest.php @@ -205,7 +205,7 @@ function (ClientApi $api): void { ); }, function (TestRpcClient $client, $result): void { - $message = $client->transmitter()->shiftNotification(); + $message = $client->transmitter()->shiftRequest(); self::assertEquals('client/registerCapability', $message->method); } ]; @@ -217,7 +217,7 @@ function (ClientApi $api): void { ); }, function (TestRpcClient $client, $result): void { - $message = $client->transmitter()->shiftNotification(); + $message = $client->transmitter()->shiftRequest(); self::assertEquals('client/unregisterCapability', $message->method); } ]; diff --git a/tests/Unit/Handler/HandlerTestCase.php b/tests/Unit/Handler/HandlerTestCase.php index fb5a4a6f..30189d67 100644 --- a/tests/Unit/Handler/HandlerTestCase.php +++ b/tests/Unit/Handler/HandlerTestCase.php @@ -16,4 +16,11 @@ public function dispatch(string $method, array $params) return $tester->requestAndWait($method, $params); } + + public function notify(string $method, array $params) + { + $tester = LanguageServerTesterBuilder::createBare()->addHandler($this->handler())->build(); + + return $tester->notifyAndWait($method, $params); + } } diff --git a/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php b/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php new file mode 100644 index 00000000..6e316efb --- /dev/null +++ b/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php @@ -0,0 +1,56 @@ +enableFileEvents() + ->build(); + $tester->initialize(); + + // capability registration happens after the intiialization request has been returned + $this->addToAssertionCount(1); + } + + public function testEmitsFileChangedEvents(): void + { + $events = new RecordingListenerProvider(); + $tester = LanguageServerTesterBuilder::create() + ->enableFileEvents() + ->addListenerProvider($events) + ->build(); + + $tester->notifyAndWait('workspace/didChangeWatchedFiles', new DidChangeWatchedFilesParams([ + new FileEvent('file://foobar', FileChangeType::CREATED) + ])); + $event = $events->shift(FilesChanged::class); + self::assertEquals(new FilesChanged(new FileEvent('file://foobar', FileChangeType::CREATED)), $event); + } +} From e8c4f31576870d08261ee693e5d0ed1850ecf956 Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 12:02:06 +0100 Subject: [PATCH 2/6] Seperate listener / handler for file events --- bin/serve.php | 5 +- .../DidChangeWatchedFilesHandler.php | 42 +------------ lib/LanguageServerTesterBuilder.php | 12 ++-- .../DidChangeWatchedFilesListener.php | 62 +++++++++++++++++++ 4 files changed, 73 insertions(+), 48 deletions(-) create mode 100644 lib/Listener/DidChangeWatchedFilesListener.php diff --git a/bin/serve.php b/bin/serve.php index 99e07cc0..0aa1a583 100755 --- a/bin/serve.php +++ b/bin/serve.php @@ -24,6 +24,7 @@ use Phpactor\LanguageServer\Example\Diagnostics\SayHelloDiagnosticsProvider; use Phpactor\LanguageServer\Handler\TextDocument\CodeActionHandler; use Phpactor\LanguageServer\Handler\Workspace\DidChangeWatchedFilesHandler; +use Phpactor\LanguageServer\Listener\DidChangeWatchedFilesListener; use Phpactor\LanguageServer\Listener\ServiceListener; use Phpactor\LanguageServer\Core\Service\ServiceManager; use Phpactor\LanguageServer\Core\Service\ServiceProviders; @@ -109,7 +110,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) use ($logge $eventDispatcher = new AggregateEventDispatcher( new ServiceListener($serviceManager), new WorkspaceListener($workspace), - new DidChangeWatchedFilesHandler($clientApi, ['**/*.php']), + new DidChangeWatchedFilesListener($clientApi, ['**/*.php']), $diagnosticsService ); @@ -120,7 +121,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) use ($logge new CommandHandler(new CommandDispatcher([ 'phpactor.say_hello' => new SayHelloCommand($clientApi) ])), - new DidChangeWatchedFilesHandler($clientApi, ['**/*.php']), + new DidChangeWatchedFilesHandler($eventDispatcher), new CodeActionHandler(new AggregateCodeActionProvider( new SayHelloCodeActionProvider() ), $workspace), diff --git a/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php index 2de767df..422b0d18 100644 --- a/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php +++ b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php @@ -16,56 +16,18 @@ use Ramsey\Uuid\Uuid; use function Amp\asyncCall; -class DidChangeWatchedFilesHandler implements ListenerProviderInterface, Handler +class DidChangeWatchedFilesHandler implements Handler { - /** - * @var ClientApi - */ - private $client; - - /** - * @var array - */ - private $globPatterns; - /** * @var EventDispatcherInterface */ private $dispatcher; - public function __construct(ClientApi $client, EventDispatcherInterface $dispatcher, array $globPatterns) + public function __construct(EventDispatcherInterface $dispatcher) { - $this->client = $client; - $this->globPatterns = $globPatterns; $this->dispatcher = $dispatcher; } - /** - * {@inheritDoc} - */ - public function getListenersForEvent(object $event): iterable - { - if ($event instanceof Initialized) { - return [[$this, 'registerCapability']]; - } - - return []; - } - - public function registerCapability(Initialized $initialized): void - { - asyncCall(function () { - yield $this->client->client()->registerCapability( - new Registration( - Uuid::uuid4()->__toString(), - 'workspace/didChangeWatchedFiles', - new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { - return new FileSystemWatcher($glob); - }, $this->globPatterns)) - )); - }); - } - /** * {@inheritDoc} */ diff --git a/lib/LanguageServerTesterBuilder.php b/lib/LanguageServerTesterBuilder.php index 77163c1c..c4c0057a 100644 --- a/lib/LanguageServerTesterBuilder.php +++ b/lib/LanguageServerTesterBuilder.php @@ -26,6 +26,7 @@ use Phpactor\LanguageServer\Handler\TextDocument\TextDocumentHandler; use Phpactor\LanguageServer\Handler\Workspace\CommandHandler; use Phpactor\LanguageServer\Handler\Workspace\DidChangeWatchedFilesHandler; +use Phpactor\LanguageServer\Listener\DidChangeWatchedFilesListener; use Phpactor\LanguageServer\Listener\ServiceListener; use Phpactor\LanguageServer\Listener\WorkspaceListener; use Phpactor\LanguageServer\Middleware\HandlerMiddleware; @@ -336,6 +337,10 @@ function (MessageTransmitter $transmitter, InitializeParams $params) { $this->listeners[] = $service; } + if ($this->enableFileEvents) { + $this->listeners[] = new DidChangeWatchedFilesListener($this->clientApi, $this->fileEventGlobs); + } + $serviceManager = new ServiceManager(new ServiceProviders(...$serviceProviders), $logger); $eventDispatcher = $this->buildEventDispatcher($serviceManager); @@ -350,12 +355,7 @@ function (MessageTransmitter $transmitter, InitializeParams $params) { } if ($this->enableFileEvents) { - $handlers = (function (array $handlers) use ($eventDispatcher) { - $handler = new DidChangeWatchedFilesHandler($this->clientApi, $eventDispatcher, $this->fileEventGlobs); - $handlers[] = $handler; - $this->listeners[] = $handler; - return $handlers; - })($handlers); + $handlers[] = new DidChangeWatchedFilesHandler($eventDispatcher); } if ($this->enableCommands) { diff --git a/lib/Listener/DidChangeWatchedFilesListener.php b/lib/Listener/DidChangeWatchedFilesListener.php new file mode 100644 index 00000000..cd0dabb7 --- /dev/null +++ b/lib/Listener/DidChangeWatchedFilesListener.php @@ -0,0 +1,62 @@ +client = $client; + $this->globPatterns = $globPatterns; + } + + /** + * {@inheritDoc} + */ + public function getListenersForEvent(object $event): iterable + { + if ($event instanceof Initialized) { + return [[$this, 'registerCapability']]; + } + + return []; + } + + public function registerCapability(Initialized $initialized): void + { + asyncCall(function () { + yield $this->client->client()->registerCapability( + new Registration( + Uuid::uuid4()->__toString(), + 'workspace/didChangeWatchedFiles', + new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { + return new FileSystemWatcher($glob); + }, $this->globPatterns)) + )); + }); + } +} From adfee9cbe0816a67fdf4ae62f9056f5023053c67 Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 12:02:39 +0100 Subject: [PATCH 3/6] Updated CL --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d15f9af..93b9bcb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +1.0.2 +----- + +- Add support for file events + 0.2.0 ----- From c93089b7d3ce4b200d8f5954d4d97224e35efb65 Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 12:04:43 +0100 Subject: [PATCH 4/6] SA fixes --- lib/Core/Server/Client/ClientClient.php | 7 +++++++ .../Workspace/DidChangeWatchedFilesHandler.php | 11 +---------- lib/LanguageServerTesterBuilder.php | 3 +++ lib/Listener/DidChangeWatchedFilesListener.php | 10 +++------- .../RecordingListenerProvider.php | 10 ++++++---- .../DidChangeWatchedFilesHandlerTest.php | 16 ---------------- 6 files changed, 20 insertions(+), 37 deletions(-) diff --git a/lib/Core/Server/Client/ClientClient.php b/lib/Core/Server/Client/ClientClient.php index 92fa3fa0..392e6214 100644 --- a/lib/Core/Server/Client/ClientClient.php +++ b/lib/Core/Server/Client/ClientClient.php @@ -5,6 +5,7 @@ use Amp\Promise; use Phpactor\LanguageServerProtocol\Registration; use Phpactor\LanguageServerProtocol\Unregistration; +use Phpactor\LanguageServer\Core\Rpc\ResponseMessage; use Phpactor\LanguageServer\Core\Server\RpcClient; final class ClientClient @@ -19,6 +20,9 @@ public function __construct(RpcClient $client) $this->client = $client; } + /** + * @return Promise + */ public function registerCapability(Registration ...$registrations): Promise { return $this->client->request('client/registerCapability', [ @@ -26,6 +30,9 @@ public function registerCapability(Registration ...$registrations): Promise ]); } + /** + * @return Promise + */ public function unregisterCapability(Unregistration ...$unregistrations): Promise { return $this->client->request('client/unregisterCapability', [ diff --git a/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php index 422b0d18..cc8995c5 100644 --- a/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php +++ b/lib/Handler/Workspace/DidChangeWatchedFilesHandler.php @@ -2,19 +2,10 @@ namespace Phpactor\LanguageServer\Handler\Workspace; -use Phpactor\LanguageServerProtocol\DidChangeTextDocumentNotification; use Phpactor\LanguageServerProtocol\DidChangeWatchedFilesParams; -use Phpactor\LanguageServerProtocol\DidChangeWatchedFilesRegistrationOptions; -use Phpactor\LanguageServerProtocol\FileSystemWatcher; -use Phpactor\LanguageServerProtocol\Registration; use Phpactor\LanguageServer\Core\Handler\Handler; -use Phpactor\LanguageServer\Core\Server\ClientApi; use Phpactor\LanguageServer\Event\FilesChanged; -use Phpactor\LanguageServer\Event\Initialized; use Psr\EventDispatcher\EventDispatcherInterface; -use Psr\EventDispatcher\ListenerProviderInterface; -use Ramsey\Uuid\Uuid; -use function Amp\asyncCall; class DidChangeWatchedFilesHandler implements Handler { @@ -38,7 +29,7 @@ public function methods(): array ]; } - public function didChange(DidChangeWatchedFilesParams $params) + public function didChange(DidChangeWatchedFilesParams $params): void { $this->dispatcher->dispatch(new FilesChanged(...$params->changes)); } diff --git a/lib/LanguageServerTesterBuilder.php b/lib/LanguageServerTesterBuilder.php index c4c0057a..97f42401 100644 --- a/lib/LanguageServerTesterBuilder.php +++ b/lib/LanguageServerTesterBuilder.php @@ -135,6 +135,9 @@ final class LanguageServerTesterBuilder */ private $diagnosticsProvider = []; + /** + * @var string[] + */ private $fileEventGlobs = ['**/*.php']; private function __construct() diff --git a/lib/Listener/DidChangeWatchedFilesListener.php b/lib/Listener/DidChangeWatchedFilesListener.php index cd0dabb7..6d34e394 100644 --- a/lib/Listener/DidChangeWatchedFilesListener.php +++ b/lib/Listener/DidChangeWatchedFilesListener.php @@ -2,16 +2,11 @@ namespace Phpactor\LanguageServer\Listener; -use Phpactor\LanguageServerProtocol\DidChangeTextDocumentNotification; -use Phpactor\LanguageServerProtocol\DidChangeWatchedFilesParams; use Phpactor\LanguageServerProtocol\DidChangeWatchedFilesRegistrationOptions; use Phpactor\LanguageServerProtocol\FileSystemWatcher; use Phpactor\LanguageServerProtocol\Registration; -use Phpactor\LanguageServer\Core\Handler\Handler; use Phpactor\LanguageServer\Core\Server\ClientApi; -use Phpactor\LanguageServer\Event\FilesChanged; use Phpactor\LanguageServer\Event\Initialized; -use Psr\EventDispatcher\EventDispatcherInterface; use Psr\EventDispatcher\ListenerProviderInterface; use Ramsey\Uuid\Uuid; use function Amp\asyncCall; @@ -50,13 +45,14 @@ public function registerCapability(Initialized $initialized): void { asyncCall(function () { yield $this->client->client()->registerCapability( - new Registration( + new Registration( Uuid::uuid4()->__toString(), 'workspace/didChangeWatchedFiles', new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { return new FileSystemWatcher($glob); }, $this->globPatterns)) - )); + ) + ); }); } } diff --git a/lib/Test/ListenerProvider/RecordingListenerProvider.php b/lib/Test/ListenerProvider/RecordingListenerProvider.php index 02681ea0..b12e656e 100644 --- a/lib/Test/ListenerProvider/RecordingListenerProvider.php +++ b/lib/Test/ListenerProvider/RecordingListenerProvider.php @@ -7,6 +7,9 @@ class RecordingListenerProvider implements ListenerProviderInterface { + /** + * @var object[] + */ private $recieved = []; /** @@ -22,9 +25,7 @@ function (object $event): void { } /** - * @templtae T of class-string - * @param T $type - * @return T + * @param string $type */ public function shift(string $type): object { @@ -37,7 +38,8 @@ public function shift(string $type): object if (!$next instanceof $type) { throw new RuntimeException(sprintf( 'Expected event of type "%s" but got "%s"', - $type, get_class($next) + $type, + get_class($next) )); } diff --git a/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php b/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php index 6e316efb..6bb3500e 100644 --- a/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php +++ b/tests/Unit/Handler/Workspace/DidChangeWatchedFilesHandlerTest.php @@ -2,29 +2,13 @@ namespace Phpactor\LanguageServer\Tests\Unit\Handler\Workspace; -use Amp\Success; -use Phly\EventDispatcher\ListenerProvider\ListenerProviderAggregate; use Phpactor\LanguageServerProtocol\DidChangeWatchedFilesParams; use Phpactor\LanguageServerProtocol\FileChangeType; use Phpactor\LanguageServerProtocol\FileEvent; -use Phpactor\LanguageServerProtocol\ServerCapabilities; -use Phpactor\LanguageServer\Core\Command\Command; -use Phpactor\LanguageServer\Core\Handler\Handler; -use Phpactor\LanguageServer\Core\Server\ClientApi; -use Phpactor\LanguageServer\Core\Server\RpcClient\TestRpcClient; -use Phpactor\LanguageServer\Event\FileCreated; use Phpactor\LanguageServer\Event\FilesChanged; -use Phpactor\LanguageServer\Event\Initialized; -use Phpactor\LanguageServer\Handler\Workspace\CommandHandler; -use Phpactor\LanguageServer\Handler\Workspace\DidChangeWatchedFilesHandler; use Phpactor\LanguageServer\LanguageServerTesterBuilder; use Phpactor\LanguageServer\Test\ListenerProvider\RecordingListenerProvider; -use Phpactor\LanguageServer\Tests\Unit\Handler\HandlerTestCase; -use Phpactor\LanguageServer\Core\Command\CommandDispatcher; use Phpactor\TestUtils\PHPUnit\TestCase; -use Psr\EventDispatcher\ListenerProviderInterface; -use function Amp\Promise\wait; -use function Amp\delay; class DidChangeWatchedFilesHandlerTest extends TestCase { From f6a4184ca3216c60f3de1f150f998e24bf7c3a03 Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 12:07:05 +0100 Subject: [PATCH 5/6] Fix CS --- lib/Listener/DidChangeWatchedFilesListener.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Listener/DidChangeWatchedFilesListener.php b/lib/Listener/DidChangeWatchedFilesListener.php index 6d34e394..2922dd92 100644 --- a/lib/Listener/DidChangeWatchedFilesListener.php +++ b/lib/Listener/DidChangeWatchedFilesListener.php @@ -46,12 +46,12 @@ public function registerCapability(Initialized $initialized): void asyncCall(function () { yield $this->client->client()->registerCapability( new Registration( - Uuid::uuid4()->__toString(), - 'workspace/didChangeWatchedFiles', - new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { - return new FileSystemWatcher($glob); - }, $this->globPatterns)) - ) + Uuid::uuid4()->__toString(), + 'workspace/didChangeWatchedFiles', + new DidChangeWatchedFilesRegistrationOptions(array_map(function (string $glob) { + return new FileSystemWatcher($glob); + }, $this->globPatterns)) + ) ); }); } From e0ad0099a1a00d21ebb3e0bdce3bb80263907bfd Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 18 Apr 2021 13:27:40 +0100 Subject: [PATCH 6/6] Bump dev alias --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 349cdcee..8ee31b54 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": {