From 24f2d6b6a1dca593422f5d2c8d3819907571e0ba Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 16 Oct 2026 08:20:47 +0200 Subject: [PATCH] [Visibility] Speed up ChangeConstantVisibilityRector with cheap constant-name gate before type resolution --- .../ClassConst/ChangeConstantVisibilityRector.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php b/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php index 1846bc9f658..05ed9f8dbae 100644 --- a/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php +++ b/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php @@ -82,7 +82,21 @@ public function refactor(Node $node): ?Node { $hasChanged = false; + $constantNames = []; + foreach ($node->getConstants() as $classConst) { + if ($classConst->consts === []) { + continue; + } + + $constantNames[strtolower($classConst->consts[0]->name->toString())] = true; + } + foreach ($this->classConstantVisibilityChanges as $classConstantVisibilityChange) { + // cheap name check before the expensive type resolution below + if (! isset($constantNames[strtolower($classConstantVisibilityChange->getConstant())])) { + continue; + } + if (! $this->isObjectType($node, $classConstantVisibilityChange->getObjectType())) { continue; }