From f84b6a48b6102ef43954900f42e9ff264973b3f6 Mon Sep 17 00:00:00 2001 From: Ivan Bozhanov Date: Sat, 15 Jul 2017 03:17:32 +0300 Subject: [PATCH] optimized param count calculation --- src/SignatureHelpProvider.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/SignatureHelpProvider.php b/src/SignatureHelpProvider.php index 18cc1a8..84a3010 100644 --- a/src/SignatureHelpProvider.php +++ b/src/SignatureHelpProvider.php @@ -5,6 +5,7 @@ namespace LanguageServer; use Microsoft\PhpParser\Node\DelimitedList\ArgumentExpressionList; use Microsoft\PhpParser\Node\Expression\CallExpression; +use Microsoft\PhpParser\Node\Expression\ArgumentExpression; use LanguageServer\Index\ReadableIndex; use LanguageServer\Protocol\{ Range, @@ -46,14 +47,16 @@ class SignatureHelpProvider public function provideSignature(PhpDocument $doc, Position $pos) : SignatureHelp { $node = $doc->getNodeAtPosition($pos); - $nodes = [$node]; + $arge = null; while ($node && !($node instanceof ArgumentExpressionList) && !($node instanceof CallExpression) && $node->parent ) { + if ($node instanceof ArgumentExpression) { + $arge = $node; + } $node = $node->parent; - $nodes[] = $node; } if (!($node instanceof ArgumentExpressionList) && !($node instanceof CallExpression) @@ -64,7 +67,7 @@ class SignatureHelpProvider if ($node instanceof ArgumentExpressionList) { $count = 0; foreach ($node->getElements() as $param) { - if (in_array($param, $nodes)) { + if ($param === $arge) { break; } $count ++;