From 48eaa5c950e2aff3c7442d2b6b13794be7dfde66 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 23 Dec 2020 05:21:12 +0700 Subject: [PATCH] [CodeQuality] Fixes #4950 Skip IssetOnPropertyObjectToPropertyExistsRector on property as variable (#4953) --- ...tOnPropertyObjectToPropertyExistsRector.php | 8 ++++++-- .../Fixture/skip_property_as_variable.php.inc | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc diff --git a/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php b/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php index 013bf423c3e..f75e96318b3 100644 --- a/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php +++ b/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php @@ -12,6 +12,7 @@ use PhpParser\Node\Expr\BinaryOp\NotIdentical; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\Isset_; use PhpParser\Node\Expr\PropertyFetch; +use PhpParser\Node\Expr\Variable; use PhpParser\Node\Identifier; use PhpParser\Node\Name; use PhpParser\Node\Scalar\String_; @@ -96,10 +97,13 @@ CODE_SAMPLE continue; } - /** @var Identifier $name */ + /** @var Identifier|Variable $name */ $name = $issetVar->name; - $property = $name->toString(); + if (! $name instanceof Identifier) { + continue; + } + $property = $name->toString(); if ($type instanceof ObjectType) { /** @var string $className */ $className = $type->getClassName(); diff --git a/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc b/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc new file mode 100644 index 00000000000..07a7adcb881 --- /dev/null +++ b/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc @@ -0,0 +1,18 @@ +getStorage()->$name); + } + + private function getStorage(): array + { + return []; + } +} + +?>