From 70396d75dc6d00f2f4a6241e090c3090d1864fb4 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 28 Aug 2024 14:36:04 +0200 Subject: [PATCH] deprecate passing a tag to ImportNode --- src/Node/ImportNode.php | 12 +++++++++++- src/NodeVisitor/MacroAutoImportNodeVisitor.php | 2 +- src/TokenParser/FromTokenParser.php | 2 +- src/TokenParser/ImportTokenParser.php | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Node/ImportNode.php b/src/Node/ImportNode.php index e80b1fd1c..31acbe9d1 100644 --- a/src/Node/ImportNode.php +++ b/src/Node/ImportNode.php @@ -24,8 +24,18 @@ use Twig\Node\Expression\NameExpression; #[YieldReady] class ImportNode extends Node { - public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, ?string $tag = null, bool $global = true) + /** + * @param bool $global + */ + public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, $global = true) { + if (null === $global || is_string($global)) { + trigger_deprecation('twig/twig', '3.12', 'Passing a tag to %s() is deprecated.', __METHOD__); + $global = func_num_args() > 4 ? func_get_arg(4) : true; + } elseif (!is_bool($global)) { + throw new \TypeError(\sprintf('Argument 4 passed to "%s()" must be a boolean, "%s" given.', __METHOD__, get_debug_type($global))); + } + parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno); } diff --git a/src/NodeVisitor/MacroAutoImportNodeVisitor.php b/src/NodeVisitor/MacroAutoImportNodeVisitor.php index 556d9dfbb..01d5a997f 100644 --- a/src/NodeVisitor/MacroAutoImportNodeVisitor.php +++ b/src/NodeVisitor/MacroAutoImportNodeVisitor.php @@ -46,7 +46,7 @@ final class MacroAutoImportNodeVisitor implements NodeVisitorInterface if ($node instanceof ModuleNode) { $this->inAModule = false; if ($this->hasMacroCalls) { - $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, null, true)); + $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, true)); } } elseif ($this->inAModule) { if ( diff --git a/src/TokenParser/FromTokenParser.php b/src/TokenParser/FromTokenParser.php index b54fadba8..2ccff5fbe 100644 --- a/src/TokenParser/FromTokenParser.php +++ b/src/TokenParser/FromTokenParser.php @@ -50,7 +50,7 @@ final class FromTokenParser extends AbstractTokenParser $stream->expect(Token::BLOCK_END_TYPE); $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); - $node = new ImportNode($macro, $var, $token->getLine(), null, $this->parser->isMainScope()); + $node = new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope()); foreach ($targets as $name => $alias) { $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); diff --git a/src/TokenParser/ImportTokenParser.php b/src/TokenParser/ImportTokenParser.php index 808da58cc..f20f35ab3 100644 --- a/src/TokenParser/ImportTokenParser.php +++ b/src/TokenParser/ImportTokenParser.php @@ -34,7 +34,7 @@ final class ImportTokenParser extends AbstractTokenParser $this->parser->addImportedSymbol('template', $var->getAttribute('name')); - return new ImportNode($macro, $var, $token->getLine(), null, $this->parser->isMainScope()); + return new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope()); } public function getTag(): string