diff --git a/rules/Php56/NodeAnalyzer/UndefinedVariableResolver.php b/rules/Php56/NodeAnalyzer/UndefinedVariableResolver.php index 4c011a322ce..318a351c046 100644 --- a/rules/Php56/NodeAnalyzer/UndefinedVariableResolver.php +++ b/rules/Php56/NodeAnalyzer/UndefinedVariableResolver.php @@ -14,7 +14,6 @@ use PhpParser\Node\Expr\Closure; use PhpParser\Node\Expr\Isset_; use PhpParser\Node\Expr\List_; -use PhpParser\Node\Expr\Ternary; use PhpParser\Node\Expr\Variable; use PhpParser\Node\FunctionLike; use PhpParser\Node\Stmt\ClassMethod; @@ -116,9 +115,9 @@ private function issetOrUnsetParent(Node $parentNode): bool return in_array($parentNode::class, [Unset_::class, UnsetCast::class, Isset_::class], true); } - private function conditionParent(Node $parentNode): bool + private function isAsCoalesceLeft(Node $parentNode, Variable $variable): bool { - return in_array($parentNode::class, [Ternary::class, Coalesce::class], true); + return $parentNode instanceof Coalesce && $parentNode->left === $variable; } private function isAssignOrStaticVariableParent(Node $parentNode): bool @@ -149,6 +148,10 @@ private function shouldSkipVariable(Variable $variable): bool return true; } + if ($this->isAsCoalesceLeft($parentNode, $variable)) { + return true; + } + // list() = | [$values] = defines variables as null if ($this->isListAssign($parentNode)) { return true;