diff --git a/Node/DumpNode.php b/Node/DumpNode.php index 3cd92674..4b710f82 100644 --- a/Node/DumpNode.php +++ b/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/Node/FormThemeNode.php b/Node/FormThemeNode.php index 2d4659ae..e38557ce 100644 --- a/Node/FormThemeNode.php +++ b/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/Node/StopwatchNode.php b/Node/StopwatchNode.php index 796ee4da..9a69d4ef 100644 --- a/Node/StopwatchNode.php +++ b/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/Node/TransDefaultDomainNode.php b/Node/TransDefaultDomainNode.php index 5a96d742..d24d7f75 100644 --- a/Node/TransDefaultDomainNode.php +++ b/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/Node/TransNode.php b/Node/TransNode.php index 881104c8..0224d46a 100644 --- a/Node/TransNode.php +++ b/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/Tests/Node/TransNodeTest.php b/Tests/Node/TransNodeTest.php index c6d30646..1ac37b9c 100644 --- a/Tests/Node/TransNodeTest.php +++ b/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/composer.json b/composer.json index fb74530c..1abf3ad1 100644 --- a/composer.json +++ b/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",