From 27cd856d0798a8f3a9227958e809c3d9c6ebb196 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 20 Aug 2026 16:36:18 +0100 Subject: [PATCH 1/4] [Symfony 7.3] Gate GetFiltersAndFunctionsToAsTwigAttributeRector on symfony/twig-bridge 7.3, not twig alone --- config/sets/symfony/composer-based.php | 2 +- .../GetFiltersAndFunctionsToAsTwigAttributeRector.php | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/sets/symfony/composer-based.php b/config/sets/symfony/composer-based.php index 98d44931..297c0a15 100644 --- a/config/sets/symfony/composer-based.php +++ b/config/sets/symfony/composer-based.php @@ -330,7 +330,7 @@ // symfony/validator 8.1 ConstraintValidatorValidateToValidateInContextRector::class, - // twig/twig 3.21 + // twig/twig 3.21 + symfony/twig-bridge 7.3 GetFiltersAndFunctionsToAsTwigAttributeRector::class, // jms/serializer 3.14 diff --git a/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php b/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php index a826b6d5..1090f3d2 100644 --- a/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php +++ b/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php @@ -27,9 +27,14 @@ public function __construct( ) { } - public function provideComposerPackageConstraint(): ComposerPackageConstraint + public function provideComposerPackageConstraint(): array { - return new ComposerPackageConstraint('twig/twig', '>=3.21'); + // the #[AsTwig*] attributes exist in twig/twig 3.21, but Symfony only autoregisters extension-less + // classes from them in symfony/twig-bridge 7.3; without both, the stripped TwigExtension is silently lost + return [ + new ComposerPackageConstraint('twig/twig', '>=3.21'), + new ComposerPackageConstraint('symfony/twig-bridge', '>=7.3'), + ]; } public function getRuleDefinition(): RuleDefinition From ad5e9cbd05e84ab4c8de19e36e8e1e98d9335b2c Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 20 Aug 2026 15:37:17 +0000 Subject: [PATCH 2/4] [rector] Rector fixes --- .../Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php b/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php index 1090f3d2..f14141d8 100644 --- a/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php +++ b/rules/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector.php @@ -27,6 +27,9 @@ public function __construct( ) { } + /** + * @return ComposerPackageConstraint[] + */ public function provideComposerPackageConstraint(): array { // the #[AsTwig*] attributes exist in twig/twig 3.21, but Symfony only autoregisters extension-less From 7b9d0a6be6c715d38ba40e3d06036061eb76079a Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 20 Aug 2026 16:43:13 +0100 Subject: [PATCH 3/4] Retrigger CI on updated rector-src dev-main From 86ef149dab31e05a399e7ea1fd521c6bad3728a6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 20 Aug 2026 16:46:33 +0100 Subject: [PATCH 4/4] [Symfony 7.3] Pin symfony/twig-bridge 7.3 in rule test composer.json to match new constraint --- .../config/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rules-tests/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector/config/composer.json b/rules-tests/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector/config/composer.json index 26b1296f..d1dbb7ec 100644 --- a/rules-tests/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector/config/composer.json +++ b/rules-tests/Symfony73/Rector/Class_/GetFiltersAndFunctionsToAsTwigAttributeRector/config/composer.json @@ -1,5 +1,6 @@ { "require": { - "twig/twig": "^3.21" + "twig/twig": "^3.21", + "symfony/twig-bridge": "^7.3" } }