Skip to content

Commit 4c9cd90

Browse files
takaramstaabm
authored andcommitted
Pass Node\Expr rather than class name to invalidateStaticMembers
1 parent 1262b29 commit 4c9cd90

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
@@ -3656,16 +3656,15 @@ private function invalidateMethodsOnExpression(Expr $expressionToInvalidate): se
36563656
);
36573657
}
36583658

3659-
public function invalidateStaticMembers(string $className): self
3659+
public function invalidateStaticMembers(Expr $var): self
36603660
{
3661-
if (!$this->reflectionProvider->hasClass($className)) {
3662-
return $this;
3663-
}
3664-
3665-
$classReflection = $this->reflectionProvider->getClass($className);
3666-
$classNamesToInvalidate = [strtolower($className)];
3667-
foreach ($classReflection->getParents() as $parentClass) {
3668-
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3661+
$classReflections = $this->getType($var)->getObjectClassReflections();
3662+
$classNamesToInvalidate = [];
3663+
foreach ($classReflections as $classReflection) {
3664+
$classNamesToInvalidate[] = strtolower($classReflection->getName());
3665+
foreach ($classReflection->getParents() as $parentClass) {
3666+
$classNamesToInvalidate[] = strtolower($parentClass->getName());
3667+
}
36693668
}
36703669

36713670
$expressionTypes = $this->expressionTypes;

src/Analyser/NodeScopeResolver.php

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

0 commit comments

Comments
 (0)