From 3357f959fe13d14b99b2ddb92e220a6271473211 Mon Sep 17 00:00:00 2001 From: Mikko Pesari Date: Fri, 10 Oct 2025 13:33:21 +0300 Subject: [PATCH 1/3] Test RemoveNonExistingVarAnnotationRector with static variable in method --- .../skip_static_variable_in_method.php.inc | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 rules-tests/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector/Fixture/skip_static_variable_in_method.php.inc 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]; + } +} From 26adf1e6feef4c590ca1755a434d9e5eb0094b07 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 11 Oct 2025 10:45:38 +0700 Subject: [PATCH 2/3] Closes #7456 Fixes https://github.com/rectorphp/rector/issues/9428 --- .../Rector/Node/RemoveNonExistingVarAnnotationRector.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php index ed910877e8d..d74cc0f5eff 100644 --- a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php +++ b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php @@ -128,6 +128,12 @@ public function refactor(Node $node): ?Node continue; } + if ($stmt instanceof Static_) { + foreach ($stmt->vars as $staticVar) { + $extractValues[] = $this->getName($staticVar->var); + } + } + if ($this->shouldSkip($node, $key, $stmt, $extractValues)) { continue; } From 1f358348036c3d92950865fcebd254e5f779370d Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 11 Oct 2025 10:47:47 +0700 Subject: [PATCH 3/3] Closes #7456 Fixes https://github.com/rectorphp/rector/issues/9428 --- .../Rector/Node/RemoveNonExistingVarAnnotationRector.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php index d74cc0f5eff..6278b4977f7 100644 --- a/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php +++ b/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php @@ -130,7 +130,13 @@ public function refactor(Node $node): ?Node if ($stmt instanceof Static_) { foreach ($stmt->vars as $staticVar) { - $extractValues[] = $this->getName($staticVar->var); + $staticVarName = $this->getName($staticVar->var); + + if ($staticVarName === null) { + continue; + } + + $extractValues[] = $staticVarName; } }