diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index 66bfe60..1d08a78 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -979,6 +979,11 @@ class DefinitionResolver return $this->resolveExpressionNodeToType($node->argumentExpressionList->children[2]->expression); } + // FOREACH KEY VARIABLE + if ($node instanceof Node\ForeachKey) { + return new Types\Integer; + } + // PARAMETERS // Get the type of the parameter: // 1. Doc block diff --git a/src/Protocol/SymbolInformation.php b/src/Protocol/SymbolInformation.php index 6b4d39e..0ac8973 100644 --- a/src/Protocol/SymbolInformation.php +++ b/src/Protocol/SymbolInformation.php @@ -83,6 +83,8 @@ class SymbolInformation ) || $node instanceof Node\UseVariableName || $node instanceof Node\Parameter + || $node instanceof Node\ForeachValue + || $node instanceof Node\ForeachKey ) { $symbol->kind = SymbolKind::VARIABLE; } else { @@ -103,6 +105,8 @@ class SymbolInformation } else { $symbol->name = ltrim((string)$node->name->getText($node->getFileContents()), "$"); } + } else if ($node instanceof Node\ForeachValue || $node instanceof Node\ForeachKey) { + $symbol->name = $node->expression->getName(); } else if (isset($node->variableName)) { $symbol->name = $node->variableName->getText($node); } else if (!isset($symbol->name)) {