From f563a4c5a8252bab85b2315ddbbe8b1309dbce3f Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 12 Feb 2024 18:08:26 +0100 Subject: [PATCH] [TwigBridge] Fix compat with Twig v3.9 --- composer.json | 2 +- src/Symfony/Bridge/Twig/Node/DumpNode.php | 2 ++ src/Symfony/Bridge/Twig/Node/FormThemeNode.php | 2 ++ src/Symfony/Bridge/Twig/Node/StopwatchNode.php | 2 ++ src/Symfony/Bridge/Twig/Node/TransDefaultDomainNode.php | 2 ++ src/Symfony/Bridge/Twig/Node/TransNode.php | 5 ++++- src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php | 4 +++- src/Symfony/Bridge/Twig/composer.json | 2 +- src/Symfony/Bundle/FrameworkBundle/composer.json | 2 +- src/Symfony/Bundle/SecurityBundle/composer.json | 2 +- src/Symfony/Bundle/TwigBundle/composer.json | 2 +- src/Symfony/Bundle/WebProfilerBundle/composer.json | 2 +- src/Symfony/Component/HttpKernel/composer.json | 2 +- .../Component/VarDumper/Tests/Dumper/CliDumperTest.php | 6 ++---- src/Symfony/Component/VarDumper/composer.json | 2 +- 15 files changed, 25 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 408b32d5b4e54..f9bc553e63b86 100644 --- a/composer.json +++ b/composer.json @@ -37,7 +37,7 @@ "friendsofphp/proxy-manager-lts": "^1.0.2", "doctrine/event-manager": "~1.0", "doctrine/persistence": "^2|^3", - "twig/twig": "^2.13|~3.8.0", + "twig/twig": "^2.13|^3.0.4", "psr/cache": "^1.0|^2.0", "psr/container": "^1.1.1", "psr/event-dispatcher": "^1.0", diff --git a/src/Symfony/Bridge/Twig/Node/DumpNode.php b/src/Symfony/Bridge/Twig/Node/DumpNode.php index 3cd92674bd020..4b710f82cb42e 100644 --- a/src/Symfony/Bridge/Twig/Node/DumpNode.php +++ b/src/Symfony/Bridge/Twig/Node/DumpNode.php @@ -11,12 +11,14 @@ namespace Symfony\Bridge\Twig\Node; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Node; /** * @author Julien Galenski */ +#[YieldReady] final class DumpNode extends Node { private $varPrefix; diff --git a/src/Symfony/Bridge/Twig/Node/FormThemeNode.php b/src/Symfony/Bridge/Twig/Node/FormThemeNode.php index 2d4659ae7bb61..e38557ceacbce 100644 --- a/src/Symfony/Bridge/Twig/Node/FormThemeNode.php +++ b/src/Symfony/Bridge/Twig/Node/FormThemeNode.php @@ -12,12 +12,14 @@ namespace Symfony\Bridge\Twig\Node; use Symfony\Component\Form\FormRenderer; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Node; /** * @author Fabien Potencier */ +#[YieldReady] final class FormThemeNode extends Node { public function __construct(Node $form, Node $resources, int $lineno, ?string $tag = null, bool $only = false) diff --git a/src/Symfony/Bridge/Twig/Node/StopwatchNode.php b/src/Symfony/Bridge/Twig/Node/StopwatchNode.php index 796ee4dab8d16..9a69d4eff39fc 100644 --- a/src/Symfony/Bridge/Twig/Node/StopwatchNode.php +++ b/src/Symfony/Bridge/Twig/Node/StopwatchNode.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Twig\Node; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AssignNameExpression; use Twig\Node\Node; @@ -20,6 +21,7 @@ * * @author Wouter J */ +#[YieldReady] final class StopwatchNode extends Node { public function __construct(Node $name, Node $body, AssignNameExpression $var, int $lineno = 0, ?string $tag = null) diff --git a/src/Symfony/Bridge/Twig/Node/TransDefaultDomainNode.php b/src/Symfony/Bridge/Twig/Node/TransDefaultDomainNode.php index 5a96d7420122f..d24d7f75f236b 100644 --- a/src/Symfony/Bridge/Twig/Node/TransDefaultDomainNode.php +++ b/src/Symfony/Bridge/Twig/Node/TransDefaultDomainNode.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Twig\Node; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Node; @@ -18,6 +19,7 @@ /** * @author Fabien Potencier */ +#[YieldReady] final class TransDefaultDomainNode extends Node { public function __construct(AbstractExpression $expr, int $lineno = 0, ?string $tag = null) diff --git a/src/Symfony/Bridge/Twig/Node/TransNode.php b/src/Symfony/Bridge/Twig/Node/TransNode.php index 881104c8cc3fd..0224d46ae0e50 100644 --- a/src/Symfony/Bridge/Twig/Node/TransNode.php +++ b/src/Symfony/Bridge/Twig/Node/TransNode.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Twig\Node; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; @@ -22,6 +23,7 @@ /** * @author Fabien Potencier */ +#[YieldReady] final class TransNode extends Node { public function __construct(Node $body, ?Node $domain = null, ?AbstractExpression $count = null, ?AbstractExpression $vars = null, ?AbstractExpression $locale = null, int $lineno = 0, ?string $tag = null) @@ -53,9 +55,10 @@ public function compile(Compiler $compiler): void $vars = null; } [$msg, $defaults] = $this->compileString($this->getNode('body'), $defaults, (bool) $vars); + $display = class_exists(YieldReady::class) ? 'yield' : 'echo'; $compiler - ->write('echo $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->trans(') + ->write($display.' $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->trans(') ->subcompile($msg) ; diff --git a/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php b/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php index c6d3064676937..1ac37b9c64a16 100644 --- a/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php @@ -13,6 +13,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Bridge\Twig\Node\TransNode; +use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Environment; use Twig\Loader\LoaderInterface; @@ -35,7 +36,8 @@ public function testCompileStrict() $this->assertEquals( sprintf( - 'echo $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->trans("trans %%var%%", array_merge(["%%var%%" => %s], %s), "messages");', + '%s $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->trans("trans %%var%%", array_merge(["%%var%%" => %s], %s), "messages");', + class_exists(YieldReady::class) ? 'yield' : 'echo', $this->getVariableGetterWithoutStrictCheck('var'), $this->getVariableGetterWithStrictCheck('foo') ), diff --git a/src/Symfony/Bridge/Twig/composer.json b/src/Symfony/Bridge/Twig/composer.json index fb74530c8b06d..1abf3ad1df889 100644 --- a/src/Symfony/Bridge/Twig/composer.json +++ b/src/Symfony/Bridge/Twig/composer.json @@ -19,7 +19,7 @@ "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json index f1b6cca7c5e4d..c1f08b1837366 100644 --- a/src/Symfony/Bundle/FrameworkBundle/composer.json +++ b/src/Symfony/Bundle/FrameworkBundle/composer.json @@ -66,7 +66,7 @@ "symfony/property-info": "^4.4|^5.0|^6.0", "symfony/web-link": "^4.4|^5.0|^6.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "twig/twig": "^2.10|~3.8.0" + "twig/twig": "^2.10|^3.0.4" }, "conflict": { "doctrine/annotations": "<1.13.1", diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index a7f9c2172d40e..097031baffb6d 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -51,7 +51,7 @@ "symfony/twig-bridge": "^4.4|^5.0|^6.0", "symfony/validator": "^4.4|^5.0|^6.0", "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/browser-kit": "<4.4", diff --git a/src/Symfony/Bundle/TwigBundle/composer.json b/src/Symfony/Bundle/TwigBundle/composer.json index 7b14915a46962..bad5b2c877f9c 100644 --- a/src/Symfony/Bundle/TwigBundle/composer.json +++ b/src/Symfony/Bundle/TwigBundle/composer.json @@ -24,7 +24,7 @@ "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "require-dev": { "symfony/asset": "^4.4|^5.0|^6.0", diff --git a/src/Symfony/Bundle/WebProfilerBundle/composer.json b/src/Symfony/Bundle/WebProfilerBundle/composer.json index 33d912c41e20e..f4cac4eafe5c7 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/composer.json +++ b/src/Symfony/Bundle/WebProfilerBundle/composer.json @@ -23,7 +23,7 @@ "symfony/polyfill-php80": "^1.16", "symfony/routing": "^4.4|^5.0|^6.0", "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "require-dev": { "symfony/browser-kit": "^4.4|^5.0|^6.0", diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index eac83be228d84..180a79b336adc 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -42,7 +42,7 @@ "symfony/translation": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2|^3", "psr/cache": "^1.0|^2.0|^3.0", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "provide": { "psr/log-implementation": "1.0|2.0" diff --git a/src/Symfony/Component/VarDumper/Tests/Dumper/CliDumperTest.php b/src/Symfony/Component/VarDumper/Tests/Dumper/CliDumperTest.php index 1c7dcc07ff4e9..dba799c55cfe3 100644 --- a/src/Symfony/Component/VarDumper/Tests/Dumper/CliDumperTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Dumper/CliDumperTest.php @@ -370,9 +370,7 @@ public function testThrowingCaster() › twig source › } - %s%eTemplate.php:%d { …} - %s%eTemplate.php:%d { …} - %s%eTemplate.php:%d { …} + %A%eTemplate.php:%d { …} %s%eTests%eDumper%eCliDumperTest.php:%d { …} %A } } @@ -572,7 +570,7 @@ public function testCollapse() ], [ 'bar' => 123, - ] + ], ]); $dumper = new CliDumper(); diff --git a/src/Symfony/Component/VarDumper/composer.json b/src/Symfony/Component/VarDumper/composer.json index 6f610c1161460..ea46a72bd0dd5 100644 --- a/src/Symfony/Component/VarDumper/composer.json +++ b/src/Symfony/Component/VarDumper/composer.json @@ -26,7 +26,7 @@ "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/process": "^4.4|^5.0|^6.0", "symfony/uid": "^5.1|^6.0", - "twig/twig": "^2.13|~3.8.0" + "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/console": "<4.4"