From 635e6b3a8d44495053221e3ce0147beb89b0ea57 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Tue, 22 Nov 2016 22:57:07 +0100 Subject: [PATCH] Add support for static access without prefix --- composer.json | 2 +- src/CompletionProvider.php | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index b29008c..5f5bf57 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "bin": ["bin/php-language-server.php"], "require": { "php": ">=7.0", - "nikic/php-parser": "dev-master#c5cdd5ad73ac20d855b84fa6d0f1f22ebff2e302", + "nikic/php-parser": "dev-master#e52ffc4447e034514339a03b450aab9cd625e37c", "phpdocumentor/reflection-docblock": "^3.0", "sabre/event": "^5.0", "felixfbecker/advanced-json-rpc": "^2.0", diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index d09afe5..ed9e382 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -45,6 +45,10 @@ class CompletionProvider { $node = $document->getNodeAtPosition($position); + if ($node instanceof Node\Expr\Error) { + $node = $node->getAttribute('parentNode'); + } + /** @var CompletionItem[] */ $items = []; @@ -64,8 +68,8 @@ class CompletionProvider $this->definitionResolver->resolveExpressionNodeToType($node->var) ); } else { - $prefixes = [is_string($node->class) ? $node->class : '']; - } + $prefixes = [$node->class instanceof Node\Name ? (string)$node->class : '']; + } // If we are just filtering by the class, add the appropiate operator to the prefix // to filter the type of symbol foreach ($prefixes as &$prefix) {