Skip to content

Commit 6d33013

Browse files
staabmondrejmirtes
authored andcommitted
Prevent unnecessary work in MutatingScope->mergeVariableHolders()
1 parent 2d4be1d commit 6d33013

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/Analyser/MutatingScope.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4091,10 +4091,13 @@ private function mergeVariableHolders(array $ourVariableTypeHolders, array $thei
40914091
$intersectedVariableTypeHolders[$exprString] = $variableTypeHolder->and($theirVariableTypeHolders[$exprString]);
40924092
} else {
40934093
$expr = $variableTypeHolder->getExpr();
4094-
if (!$expr->hasAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME)) {
4095-
$expr->setAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME, $nodeFinder->findFirst($expr, $globalVariableCallback) !== null);
4094+
4095+
$containsSuperGlobal = $expr->getAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME);
4096+
if ($containsSuperGlobal === null) {
4097+
$containsSuperGlobal = $nodeFinder->findFirst($expr, $globalVariableCallback) !== null;
4098+
$expr->setAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME, $containsSuperGlobal);
40964099
}
4097-
if ($expr->getAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME) === true) {
4100+
if ($containsSuperGlobal === true) {
40984101
continue;
40994102
}
41004103

@@ -4108,10 +4111,13 @@ private function mergeVariableHolders(array $ourVariableTypeHolders, array $thei
41084111
}
41094112

41104113
$expr = $variableTypeHolder->getExpr();
4111-
if (!$expr->hasAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME)) {
4112-
$expr->setAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME, $nodeFinder->findFirst($expr, $globalVariableCallback) !== null);
4114+
4115+
$containsSuperGlobal = $expr->getAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME);
4116+
if ($containsSuperGlobal === null) {
4117+
$containsSuperGlobal = $nodeFinder->findFirst($expr, $globalVariableCallback) !== null;
4118+
$expr->setAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME, $containsSuperGlobal);
41134119
}
4114-
if ($expr->getAttribute(self::CONTAINS_SUPER_GLOBAL_ATTRIBUTE_NAME) === true) {
4120+
if ($containsSuperGlobal === true) {
41154121
continue;
41164122
}
41174123

0 commit comments

Comments
 (0)