Skip to content

Commit 74fcfd7

Browse files
committed
Pass Node\Expr rather than class name to invalidateStaticMembers
1 parent 7fe129a commit 74fcfd7

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
@@ -3608,16 +3608,15 @@ private function invalidateMethodsOnExpression(Expr $expressionToInvalidate): se
36083608
);
36093609
}
36103610

3611-
public function invalidateStaticMembers(string $className): self
3611+
public function invalidateStaticMembers(Expr $var): self
36123612
{
3613-
if (!$this->reflectionProvider->hasClass($className)) {
3614-
return $this;
3615-
}
3616-
3617-
$classReflection = $this->reflectionProvider->getClass($className);
3618-
$classNamesToInvalidate = [strtolower($className)];
3619-
foreach ($classReflection->getParents() as $parentClass) {
3620-
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3613+
$classReflections = $this->getType($var)->getObjectClassReflections();
3614+
$classNamesToInvalidate = [];
3615+
foreach ($classReflections as $classReflection) {
3616+
$classNamesToInvalidate[] = strtolower($classReflection->getName());
3617+
foreach ($classReflection->getParents() as $parentClass) {
3618+
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3619+
}
36213620
}
36223621

36233622
$expressionTypes = $this->expressionTypes;

src/Analyser/NodeScopeResolver.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3178,10 +3178,7 @@ function (MutatingScope $scope) use ($stmt, $expr, $nodeCallback, $context, $sto
31783178
$this->callNodeCallback($nodeCallback, new InvalidateExprNode($normalizedExpr->var), $scope, $storage);
31793179
$scope = $scope->invalidateExpression($normalizedExpr->var, true);
31803180
if ($hasSideEffects) {
3181-
$classNames = $scope->getType($normalizedExpr->var)->getObjectClassNames();
3182-
foreach ($classNames as $className) {
3183-
$scope = $scope->invalidateStaticMembers($className);
3184-
}
3181+
$scope = $scope->invalidateStaticMembers($normalizedExpr->var);
31853182
}
31863183
}
31873184
if ($parametersAcceptor !== null && !$methodReflection->isStatic()) {

0 commit comments

Comments
 (0)