From 5400538f1d1ed49811e98b6c3087155ece80c42c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 2 Aug 2026 23:06:36 +0200 Subject: [PATCH] [composer-based] Bond RedirectToRouteRector to symfony/framework-bundle 2.6 Controller::redirectToRoute() was added in symfony/framework-bundle 2.6, so the rule now declares that constraint and is registered in the composer-based set. The constraint is resolved from the installed packages, so the rule is skipped whenever symfony/framework-bundle is missing. Add it to require-dev to keep the rule test running, which pulls the remaining symfony dev dependencies up to ^7.4 to resolve. --- composer.json | 13 +++++++------ config/sets/symfony/composer-based.php | 4 ++++ .../Rector/MethodCall/RedirectToRouteRector.php | 11 ++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 2cec7d1d2..897a9baaf 100644 --- a/composer.json +++ b/composer.json @@ -17,13 +17,14 @@ "rector/rector-src": "dev-main", "rector/swiss-knife": "^2.4", "symfony/config": "^8.1", - "symfony/dependency-injection": "^6.4", + "symfony/dependency-injection": "^7.4", + "symfony/framework-bundle": "^7.4", "symfony/http-kernel": "^7.4", - "symfony/routing": "^6.4", - "symfony/security-core": "^6.4", - "symfony/security-http": "^6.4", - "symfony/validator": "^6.4", - "symfony/web-link": "^6.4", + "symfony/routing": "^7.4", + "symfony/security-core": "^7.4", + "symfony/security-http": "^7.4", + "symfony/validator": "^7.4", + "symfony/web-link": "^7.4", "symplify/easy-coding-standard": "^13.2", "symplify/phpstan-rules": "^14.12", "symplify/vendor-patches": "^11.5", diff --git a/config/sets/symfony/composer-based.php b/config/sets/symfony/composer-based.php index f2027f579..377bc6507 100644 --- a/config/sets/symfony/composer-based.php +++ b/config/sets/symfony/composer-based.php @@ -43,6 +43,7 @@ use Rector\Symfony\CodeQuality\Rector\AttributeGroup\SingleConditionSecurityAttributeToIsGrantedRector; use Rector\Symfony\CodeQuality\Rector\Class_\SplitAndSecurityAttributeToIsGrantedRector; use Rector\Symfony\Symfony25\Rector\MethodCall\AddViolationToBuildViolationRector; +use Rector\Symfony\Symfony26\Rector\MethodCall\RedirectToRouteRector; use Rector\Symfony\Symfony42\Rector\New_\RootNodeTreeBuilderRector; use Rector\Symfony\Symfony42\Rector\New_\StringToArrayArgumentProcessRector; use Rector\Symfony\Symfony43\Rector\ClassMethod\EventDispatcherParentConstructRector; @@ -95,6 +96,9 @@ // symfony/validator 2.5 AddViolationToBuildViolationRector::class, + // symfony/framework-bundle 2.6 + RedirectToRouteRector::class, + // symfony/config 4.2 RootNodeTreeBuilderRector::class, diff --git a/rules/Symfony26/Rector/MethodCall/RedirectToRouteRector.php b/rules/Symfony26/Rector/MethodCall/RedirectToRouteRector.php index 488b05ac8..9334c6035 100644 --- a/rules/Symfony26/Rector/MethodCall/RedirectToRouteRector.php +++ b/rules/Symfony26/Rector/MethodCall/RedirectToRouteRector.php @@ -10,19 +10,28 @@ use PhpParser\Node\Expr\MethodCall; use Rector\Rector\AbstractRector; use Rector\Symfony\TypeAnalyzer\ControllerAnalyzer; +use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface; +use Rector\VersionBonding\ValueObject\ComposerPackageConstraint; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** + * @changelog https://github.com/symfony/symfony/blob/2.6/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md + * * @see \Rector\Symfony\Tests\Symfony26\Rector\MethodCall\RedirectToRouteRector\RedirectToRouteRectorTest */ -final class RedirectToRouteRector extends AbstractRector +final class RedirectToRouteRector extends AbstractRector implements ComposerPackageConstraintInterface { public function __construct( private readonly ControllerAnalyzer $controllerAnalyzer ) { } + public function provideComposerPackageConstraint(): ComposerPackageConstraint + { + return new ComposerPackageConstraint('symfony/framework-bundle', '>=2.6'); + } + public function getRuleDefinition(): RuleDefinition { return new RuleDefinition(