From cf4727606a3810a6ab8356199dc2fe544e6174bb Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sat, 24 Aug 2024 23:22:24 +0200 Subject: [PATCH] Move code from ExtendsTokenParser to Parser --- CHANGELOG | 1 + doc/deprecated.rst | 3 +++ src/Parser.php | 8 ++++++++ src/TokenParser/ExtendsTokenParser.php | 3 --- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fa700246e..052713737 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ # 3.12.0 (2024-XX-XX) + * Deprecate passing `null` to `Twig\Parser::setParent()` * Update `Node::__toString()` to include the node tag if set * Add support for integers in methods of `Twig\Node\Node` that take a Node name * Deprecate not passing a `BodyNode` instance as the body of a `ModuleNode` or `MacroNode` constructor diff --git a/doc/deprecated.rst b/doc/deprecated.rst index fb174a1b4..8469250ba 100644 --- a/doc/deprecated.rst +++ b/doc/deprecated.rst @@ -166,6 +166,9 @@ Parser * The ``Twig\ExpressionParser::parseArrayExpression()`` method is deprecated, use ``Twig\ExpressionParser::parseSequenceExpression()`` instead. +* Passing ``null`` to ``Twig\Parser::setParent()`` is deprecated as of Twig + 3.12. + Templates --------- diff --git a/src/Parser.php b/src/Parser.php index 65a7a64e6..f8a3dd366 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -292,6 +292,14 @@ class Parser public function setParent(?Node $parent): void { + if (null === $parent) { + trigger_deprecation('twig/twig', '3.12', 'Passing "null" to "%s()" is deprecated.', __METHOD__); + } + + if (null !== $this->parent) { + throw new SyntaxError('Multiple extends tags are forbidden.', $parent->getTemplateLine(), $parent->getSourceContext()); + } + $this->parent = $parent; } diff --git a/src/TokenParser/ExtendsTokenParser.php b/src/TokenParser/ExtendsTokenParser.php index 7368459de..7fba7da04 100644 --- a/src/TokenParser/ExtendsTokenParser.php +++ b/src/TokenParser/ExtendsTokenParser.php @@ -35,9 +35,6 @@ final class ExtendsTokenParser extends AbstractTokenParser throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); } - if (null !== $this->parser->getParent()) { - throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); - } $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); $stream->expect(Token::BLOCK_END_TYPE);