From 1cfba8b6bb5d65f49fc059097bb347d1c31189b1 Mon Sep 17 00:00:00 2001 From: Phil Nelson Date: Mon, 25 Dec 2017 12:55:48 +1100 Subject: [PATCH] fix(DefinitionResolver): don't crash if foreach key isn't a variable (#564) --- fixtures/completion/foreach.php | 2 +- src/DefinitionResolver.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fixtures/completion/foreach.php b/fixtures/completion/foreach.php index b6fa5be..4278f00 100644 --- a/fixtures/completion/foreach.php +++ b/fixtures/completion/foreach.php @@ -36,5 +36,5 @@ foreach ($bar->test() as $value) { $ } -foreach ($unknownArray as $unknown) { +foreach ($unknownArray as $member->access => $unknown) { $unkno diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index a408dd4..72bdce4 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -571,7 +571,9 @@ class DefinitionResolver // If we get to a ForeachStatement, check the keys and values if ($n instanceof Node\Statement\ForeachStatement) { - if ($n->foreachKey && $n->foreachKey->expression->getName() === $name) { + if ($n->foreachKey instanceof Node\Expression\Variable + && $n->foreachKey->expression->getName() === $name + ) { return $n->foreachKey; } if ($n->foreachValue