diff --git a/rules-tests/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector/Fixture/skip_static_variable_in_method.php.inc b/rules-tests/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector/Fixture/skip_static_variable_in_method.php.inc new file mode 100644 index 00000000000..fb79cadee07 --- /dev/null +++ b/rules-tests/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector/Fixture/skip_static_variable_in_method.php.inc @@ -0,0 +1,22 @@ + + */ + static $cached_result = []; + + if (!isset($cached_result[$param])) { + $cached_result[$param] = doExpensiveCalculation($param); + } + + return $cached_result[$param]; + } +} diff --git a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php index ed910877e8d..6278b4977f7 100644 --- a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php +++ b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php @@ -128,6 +128,18 @@ public function refactor(Node $node): ?Node continue; } + if ($stmt instanceof Static_) { + foreach ($stmt->vars as $staticVar) { + $staticVarName = $this->getName($staticVar->var); + + if ($staticVarName === null) { + continue; + } + + $extractValues[] = $staticVarName; + } + } + if ($this->shouldSkip($node, $key, $stmt, $extractValues)) { continue; }