Skip to content

Commit 05bfe54

Browse files
committed
Pass Node\Expr rather than class name to invalidateStaticMembers
1 parent 1488f0f commit 05bfe54

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

src/Analyser/MutatingScope.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3643,16 +3643,15 @@ private function invalidateMethodsOnExpression(Expr $expressionToInvalidate): se
36433643
);
36443644
}
36453645

3646-
public function invalidateStaticMembers(string $className): self
3646+
public function invalidateStaticMembers(Expr $var): self
36473647
{
3648-
if (!$this->reflectionProvider->hasClass($className)) {
3649-
return $this;
3650-
}
3651-
3652-
$classReflection = $this->reflectionProvider->getClass($className);
3653-
$classNamesToInvalidate = [strtolower($className)];
3654-
foreach ($classReflection->getParents() as $parentClass) {
3655-
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3648+
$classReflections = $this->getType($var)->getObjectClassReflections();
3649+
$classNamesToInvalidate = [];
3650+
foreach ($classReflections as $classReflection) {
3651+
$classNamesToInvalidate[] = strtolower($classReflection->getName());
3652+
foreach ($classReflection->getParents() as $parentClass) {
3653+
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3654+
}
36563655
}
36573656

36583657
$expressionTypes = $this->expressionTypes;

src/Analyser/NodeScopeResolver.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3218,10 +3218,7 @@ function (MutatingScope $scope) use ($stmt, $expr, $nodeCallback, $context, $sto
32183218
$this->callNodeCallback($nodeCallback, new InvalidateExprNode($normalizedExpr->var), $scope, $storage);
32193219
$scope = $scope->invalidateExpression($normalizedExpr->var, true, $methodReflection->getDeclaringClass());
32203220
if ($hasSideEffects) {
3221-
$classNames = $scope->getType($normalizedExpr->var)->getObjectClassNames();
3222-
foreach ($classNames as $className) {
3223-
$scope = $scope->invalidateStaticMembers($className);
3224-
}
3221+
$scope = $scope->invalidateStaticMembers($normalizedExpr->var);
32253222
}
32263223
}
32273224
if ($parametersAcceptor !== null && !$methodReflection->isStatic()) {

0 commit comments

Comments
 (0)