From e9045daae02ca917d2778561f5c1a1da712c846c Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Thu, 26 Sep 2024 21:04:14 +0200 Subject: [PATCH] Use the new Nodes class for a better test --- src/Node/SetNode.php | 3 ++- src/Parser.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Node/SetNode.php b/src/Node/SetNode.php index 288911a5c22..6e0661edb51 100644 --- a/src/Node/SetNode.php +++ b/src/Node/SetNode.php @@ -33,7 +33,8 @@ public function __construct(bool $capture, Node $names, Node $values, int $linen $safe = false; if ($capture) { $safe = true; - if (Node::class === get_class($values) && !count($values)) { + // Node::class === get_class($values) should be removed in Twig 4.0 + if (($values instanceof Nodes || Node::class === get_class($values)) && !count($values)) { $values = new ConstantExpression('', $values->getTemplateLine()); $capture = false; } elseif ($values instanceof TextNode) { diff --git a/src/Parser.php b/src/Parser.php index 3e3ac7db0ca..10c010e875b 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -373,7 +373,8 @@ private function filterBodyNodes(Node $node, bool $nested = false): ?Node // here, $nested means "being at the root level of a child template" // we need to discard the wrapping "Node" for the "body" node - $nested = $nested || Nodes::class !== \get_class($node); + // The second part of the condition should be removed in Twig 4.0 + $nested = $nested || $node instanceof Nodes || Node::class !== \get_class($node); foreach ($node as $k => $n) { if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { $node->removeNode($k);