diff --git a/composer.json b/composer.json index c17d3a7306f67..a1a900addb967 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,7 @@ "ext-xml": "*", "doctrine/event-manager": "^2", "doctrine/persistence": "^3.1", - "twig/twig": "^3.12", + "twig/twig": "^3.12|^4.0", "psr/cache": "^2.0|^3.0", "psr/clock": "^1.0", "psr/container": "^1.1|^2.0", diff --git a/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php b/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php index 0b055cae98285..35288174b4245 100644 --- a/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php @@ -18,6 +18,7 @@ use Twig\Loader\LoaderInterface; use Twig\Node\Expression\NameExpression; use Twig\Node\TextNode; +use Twig\Runtime\LoopIterator; /** * @author Asmir Mustafic @@ -50,6 +51,11 @@ protected function getVariableGetterWithoutStrictCheck($name) protected function getVariableGetterWithStrictCheck($name) { + if (class_exists(LoopIterator::class)) { + return \sprintf('(array_key_exists("%1$s", $context) ? $context["%1$s"] : throw new RuntimeError(\'Variable "%1$s" does not exist.\', 0, $this->source))', $name); + } + + // for Twig 3 and older, can be removed when support for Twig 3 is dropped return \sprintf('(isset($context["%1$s"]) || array_key_exists("%1$s", $context) ? $context["%1$s"] : (function () { throw new RuntimeError(\'Variable "%1$s" does not exist.\', 0, $this->source); })())', $name); } } diff --git a/src/Symfony/Bridge/Twig/composer.json b/src/Symfony/Bridge/Twig/composer.json index 3af8ccbb7ecce..9d94e1c11a8be 100644 --- a/src/Symfony/Bridge/Twig/composer.json +++ b/src/Symfony/Bridge/Twig/composer.json @@ -19,7 +19,7 @@ "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json index 50672edb9c3a9..a6552ca5b7f38 100644 --- a/src/Symfony/Bundle/FrameworkBundle/composer.json +++ b/src/Symfony/Bundle/FrameworkBundle/composer.json @@ -73,7 +73,7 @@ "symfony/web-link": "^6.4|^7.0", "symfony/webhook": "^7.2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "conflict": { "doctrine/persistence": "<1.3", diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index 8660196a11cf2..daef38d06ca3d 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -50,7 +50,7 @@ "symfony/twig-bridge": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.12", + "twig/twig": "^3.12|^4.0", "web-token/jwt-library": "^3.3.2|^4.0" }, "conflict": { diff --git a/src/Symfony/Bundle/TwigBundle/composer.json b/src/Symfony/Bundle/TwigBundle/composer.json index f6e0e110cc686..3dc0980943820 100644 --- a/src/Symfony/Bundle/TwigBundle/composer.json +++ b/src/Symfony/Bundle/TwigBundle/composer.json @@ -23,7 +23,7 @@ "symfony/twig-bridge": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "require-dev": { "symfony/asset": "^6.4|^7.0", diff --git a/src/Symfony/Bundle/WebProfilerBundle/composer.json b/src/Symfony/Bundle/WebProfilerBundle/composer.json index 6be16ebc2fdc0..a6efec177dbaa 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/composer.json +++ b/src/Symfony/Bundle/WebProfilerBundle/composer.json @@ -22,7 +22,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/routing": "^6.4|^7.0", "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "require-dev": { "symfony/browser-kit": "^6.4|^7.0", diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index 89421417f58f1..635f5ddb8d5cd 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -47,7 +47,7 @@ "symfony/var-dumper": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0", "psr/cache": "^1.0|^2.0|^3.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" diff --git a/src/Symfony/Component/VarDumper/composer.json b/src/Symfony/Component/VarDumper/composer.json index eaba033e14885..64a1594772004 100644 --- a/src/Symfony/Component/VarDumper/composer.json +++ b/src/Symfony/Component/VarDumper/composer.json @@ -25,7 +25,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "conflict": { "symfony/console": "<6.4"