From 80b7f0b7017bdb49e2f74d181658026ea70648da Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Wed, 29 Oct 2025 21:39:54 +0100 Subject: [PATCH] Don't forget property-fetch scope-expressions on `$this` after static method call --- src/Analyser/MutatingScope.php | 2 +- src/Analyser/NodeScopeResolver.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Analyser/MutatingScope.php b/src/Analyser/MutatingScope.php index 88ff702a1e..42e312be67 100644 --- a/src/Analyser/MutatingScope.php +++ b/src/Analyser/MutatingScope.php @@ -4597,7 +4597,7 @@ private function shouldInvalidateExpression(string $exprStringToInvalidate, Expr return true; } - private function invalidateMethodsOnExpression(Expr $expressionToInvalidate): self + public function invalidateMethodsOnExpression(Expr $expressionToInvalidate): self { $exprStringToInvalidate = $this->getNodeKey($expressionToInvalidate); $expressionTypes = $this->expressionTypes; diff --git a/src/Analyser/NodeScopeResolver.php b/src/Analyser/NodeScopeResolver.php index 9e1b226d8c..c30e5dfd1b 100644 --- a/src/Analyser/NodeScopeResolver.php +++ b/src/Analyser/NodeScopeResolver.php @@ -3117,7 +3117,11 @@ static function (): void { && $scope->isInClass() && $scope->getClassReflection()->is($methodReflection->getDeclaringClass()->getName()) ) { - $scope = $scope->invalidateExpression(new Variable('this'), true); + if ($methodReflection->isStatic()) { + $scope = $scope->invalidateMethodsOnExpression(new Variable('this')); + } else { + $scope = $scope->invalidateExpression(new Variable('this'), true); + } } if (