Skip to content

Commit c5b62d7

Browse files
committed
Updated Rector to commit 0df45b4d4d6bb849eff6b0f1b8ac39a6088b9492
rectorphp/rector-src@0df45b4 [dead-code] Skip runtime exists_* checks in RemoveAlwaysTrueIfConditionRector (#8097)
1 parent 9406698 commit c5b62d7

14 files changed

Lines changed: 68 additions & 472 deletions

File tree

rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PhpParser\Node\Expr\ArrayDimFetch;
99
use PhpParser\Node\Expr\Assign;
1010
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
11+
use PhpParser\Node\Expr\FuncCall;
1112
use PhpParser\Node\Expr\MethodCall;
1213
use PhpParser\Node\Expr\PropertyFetch;
1314
use PhpParser\Node\Expr\StaticCall;
@@ -44,6 +45,14 @@ final class RemoveAlwaysTrueIfConditionRector extends AbstractRector
4445
* @readonly
4546
*/
4647
private SafeLeftTypeBooleanAndOrAnalyzer $safeLeftTypeBooleanAndOrAnalyzer;
48+
/**
49+
* Functions that depend on runtime state (autoloading, eval(), loaded extensions).
50+
* PHPStan may narrow their result to a constant true, but it can change at runtime,
51+
* so the condition must not be treated as always true.
52+
*
53+
* @var string[]
54+
*/
55+
private const RUNTIME_STATE_FUNCTIONS = ['class_exists', 'interface_exists', 'trait_exists', 'enum_exists', 'function_exists', 'method_exists', 'property_exists', 'defined', 'extension_loaded'];
4756
public function __construct(ExprAnalyzer $exprAnalyzer, BetterNodeFinder $betterNodeFinder, SafeLeftTypeBooleanAndOrAnalyzer $safeLeftTypeBooleanAndOrAnalyzer)
4857
{
4958
$this->exprAnalyzer = $exprAnalyzer;
@@ -154,7 +163,18 @@ private function shouldSkipFromVariable(Expr $expr): bool
154163
}
155164
private function shouldSkipExpr(Expr $expr): bool
156165
{
157-
return (bool) $this->betterNodeFinder->findInstancesOf($expr, [PropertyFetch::class, StaticPropertyFetch::class, ArrayDimFetch::class, MethodCall::class, StaticCall::class]);
166+
$hasNonStaticNode = (bool) $this->betterNodeFinder->findInstancesOf($expr, [PropertyFetch::class, StaticPropertyFetch::class, ArrayDimFetch::class, MethodCall::class, StaticCall::class]);
167+
if ($hasNonStaticNode) {
168+
return \true;
169+
}
170+
/** @var FuncCall[] $funcCalls */
171+
$funcCalls = $this->betterNodeFinder->findInstancesOf($expr, [FuncCall::class]);
172+
foreach ($funcCalls as $funcCall) {
173+
if ($this->isNames($funcCall, self::RUNTIME_STATE_FUNCTIONS)) {
174+
return \true;
175+
}
176+
}
177+
return \false;
158178
}
159179
private function refactorIfWithBooleanAnd(If_ $if): ?If_
160180
{

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '6ab5370e332a3eee88b0625d984aea9112f9a1ad';
22+
public const PACKAGE_VERSION = '0df45b4d4d6bb849eff6b0f1b8ac39a6088b9492';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-06-28 15:07:03';
27+
public const RELEASE_DATE = '2026-06-28 16:34:26';
2828
/**
2929
* @var int
3030
*/

vendor/composer/autoload_classmap.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2537,8 +2537,6 @@
25372537
'Rector\\Symfony\\Annotation\\AnnotationAnalyzer' => $vendorDir . '/rector/rector-symfony/src/Annotation/AnnotationAnalyzer.php',
25382538
'Rector\\Symfony\\ApplicationMetadata\\ListenerServiceDefinitionProvider' => $vendorDir . '/rector/rector-symfony/src/ApplicationMetadata/ListenerServiceDefinitionProvider.php',
25392539
'Rector\\Symfony\\Bridge\\NodeAnalyzer\\ControllerMethodAnalyzer' => $vendorDir . '/rector/rector-symfony/src/Bridge/NodeAnalyzer/ControllerMethodAnalyzer.php',
2540-
'Rector\\Symfony\\Bridge\\Symfony\\ContainerServiceProvider' => $vendorDir . '/rector/rector-symfony/src/Bridge/Symfony/ContainerServiceProvider.php',
2541-
'Rector\\Symfony\\Bridge\\Symfony\\Routing\\SymfonyRoutesProvider' => $vendorDir . '/rector/rector-symfony/src/Bridge/Symfony/Routing/SymfonyRoutesProvider.php',
25422540
'Rector\\Symfony\\BundleClassResolver' => $vendorDir . '/rector/rector-symfony/src/BundleClassResolver.php',
25432541
'Rector\\Symfony\\CodeQuality\\Enum\\ResponseClass' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/Enum/ResponseClass.php',
25442542
'Rector\\Symfony\\CodeQuality\\NodeAnalyzer\\AttributePresenceDetector' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/NodeAnalyzer/AttributePresenceDetector.php',
@@ -2581,7 +2579,6 @@
25812579
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceTagsToDefaultsAutoconfigureRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceTagsToDefaultsAutoconfigureRector.php',
25822580
'Rector\\Symfony\\Configs\\Rector\\Reflection\\ConstructorReflectionTypesResolver' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Reflection/ConstructorReflectionTypesResolver.php',
25832581
'Rector\\Symfony\\Configs\\ValueObject\\ServiceArguments' => $vendorDir . '/rector/rector-symfony/rules/Configs/ValueObject/ServiceArguments.php',
2584-
'Rector\\Symfony\\Contract\\Bridge\\Symfony\\Routing\\SymfonyRoutesProviderInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/Bridge/Symfony/Routing/SymfonyRoutesProviderInterface.php',
25852582
'Rector\\Symfony\\Contract\\EventReferenceToMethodNameInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/EventReferenceToMethodNameInterface.php',
25862583
'Rector\\Symfony\\Contract\\Tag\\TagInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/Tag/TagInterface.php',
25872584
'Rector\\Symfony\\DataProvider\\ServiceMapProvider' => $vendorDir . '/rector/rector-symfony/src/DataProvider/ServiceMapProvider.php',
@@ -2765,7 +2762,6 @@
27652762
'Rector\\Symfony\\ValueObject\\ReplaceServiceArgument' => $vendorDir . '/rector/rector-symfony/src/ValueObject/ReplaceServiceArgument.php',
27662763
'Rector\\Symfony\\ValueObject\\ServiceDefinition' => $vendorDir . '/rector/rector-symfony/src/ValueObject/ServiceDefinition.php',
27672764
'Rector\\Symfony\\ValueObject\\ServiceMap\\ServiceMap' => $vendorDir . '/rector/rector-symfony/src/ValueObject/ServiceMap/ServiceMap.php',
2768-
'Rector\\Symfony\\ValueObject\\SymfonyRouteMetadata' => $vendorDir . '/rector/rector-symfony/src/ValueObject/SymfonyRouteMetadata.php',
27692765
'Rector\\Symfony\\ValueObject\\Tag' => $vendorDir . '/rector/rector-symfony/src/ValueObject/Tag.php',
27702766
'Rector\\Symfony\\ValueObject\\Tag\\EventListenerTag' => $vendorDir . '/rector/rector-symfony/src/ValueObject/Tag/EventListenerTag.php',
27712767
'Rector\\Symfony\\ValueObject\\ValidatorAssert\\ClassMethodAndAnnotation' => $vendorDir . '/rector/rector-symfony/src/ValueObject/ValidatorAssert/ClassMethodAndAnnotation.php',

vendor/composer/autoload_static.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2802,8 +2802,6 @@ class ComposerStaticInite7732782e781a0db6ef2f014a417d492
28022802
'Rector\\Symfony\\Annotation\\AnnotationAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/Annotation/AnnotationAnalyzer.php',
28032803
'Rector\\Symfony\\ApplicationMetadata\\ListenerServiceDefinitionProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/ApplicationMetadata/ListenerServiceDefinitionProvider.php',
28042804
'Rector\\Symfony\\Bridge\\NodeAnalyzer\\ControllerMethodAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/Bridge/NodeAnalyzer/ControllerMethodAnalyzer.php',
2805-
'Rector\\Symfony\\Bridge\\Symfony\\ContainerServiceProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Bridge/Symfony/ContainerServiceProvider.php',
2806-
'Rector\\Symfony\\Bridge\\Symfony\\Routing\\SymfonyRoutesProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Bridge/Symfony/Routing/SymfonyRoutesProvider.php',
28072805
'Rector\\Symfony\\BundleClassResolver' => __DIR__ . '/..' . '/rector/rector-symfony/src/BundleClassResolver.php',
28082806
'Rector\\Symfony\\CodeQuality\\Enum\\ResponseClass' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/Enum/ResponseClass.php',
28092807
'Rector\\Symfony\\CodeQuality\\NodeAnalyzer\\AttributePresenceDetector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/NodeAnalyzer/AttributePresenceDetector.php',
@@ -2846,7 +2844,6 @@ class ComposerStaticInite7732782e781a0db6ef2f014a417d492
28462844
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceTagsToDefaultsAutoconfigureRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceTagsToDefaultsAutoconfigureRector.php',
28472845
'Rector\\Symfony\\Configs\\Rector\\Reflection\\ConstructorReflectionTypesResolver' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Reflection/ConstructorReflectionTypesResolver.php',
28482846
'Rector\\Symfony\\Configs\\ValueObject\\ServiceArguments' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/ValueObject/ServiceArguments.php',
2849-
'Rector\\Symfony\\Contract\\Bridge\\Symfony\\Routing\\SymfonyRoutesProviderInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/Bridge/Symfony/Routing/SymfonyRoutesProviderInterface.php',
28502847
'Rector\\Symfony\\Contract\\EventReferenceToMethodNameInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/EventReferenceToMethodNameInterface.php',
28512848
'Rector\\Symfony\\Contract\\Tag\\TagInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/Tag/TagInterface.php',
28522849
'Rector\\Symfony\\DataProvider\\ServiceMapProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/DataProvider/ServiceMapProvider.php',
@@ -3030,7 +3027,6 @@ class ComposerStaticInite7732782e781a0db6ef2f014a417d492
30303027
'Rector\\Symfony\\ValueObject\\ReplaceServiceArgument' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/ReplaceServiceArgument.php',
30313028
'Rector\\Symfony\\ValueObject\\ServiceDefinition' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/ServiceDefinition.php',
30323029
'Rector\\Symfony\\ValueObject\\ServiceMap\\ServiceMap' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/ServiceMap/ServiceMap.php',
3033-
'Rector\\Symfony\\ValueObject\\SymfonyRouteMetadata' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/SymfonyRouteMetadata.php',
30343030
'Rector\\Symfony\\ValueObject\\Tag' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/Tag.php',
30353031
'Rector\\Symfony\\ValueObject\\Tag\\EventListenerTag' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/Tag/EventListenerTag.php',
30363032
'Rector\\Symfony\\ValueObject\\ValidatorAssert\\ClassMethodAndAnnotation' => __DIR__ . '/..' . '/rector/rector-symfony/src/ValueObject/ValidatorAssert/ClassMethodAndAnnotation.php',

vendor/composer/installed.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,12 +1867,12 @@
18671867
"source": {
18681868
"type": "git",
18691869
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
1870-
"reference": "77cc62befeb518855f3d9178fd6a93318b899dc2"
1870+
"reference": "8c854a4314065cb04277e1729be8c397aaae6d6f"
18711871
},
18721872
"dist": {
18731873
"type": "zip",
1874-
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/77cc62befeb518855f3d9178fd6a93318b899dc2",
1875-
"reference": "77cc62befeb518855f3d9178fd6a93318b899dc2",
1874+
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/8c854a4314065cb04277e1729be8c397aaae6d6f",
1875+
"reference": "8c854a4314065cb04277e1729be8c397aaae6d6f",
18761876
"shasum": ""
18771877
},
18781878
"require": {
@@ -1906,7 +1906,7 @@
19061906
"tomasvotruba\/unused-public": "^2.2",
19071907
"tracy\/tracy": "^2.12"
19081908
},
1909-
"time": "2026-06-26T13:20:56+00:00",
1909+
"time": "2026-06-28T14:16:40+00:00",
19101910
"default-branch": true,
19111911
"type": "rector-extension",
19121912
"extra": {

0 commit comments

Comments
 (0)