Remove deprecated code

This commit is contained in:
Fabien Potencier
2026-07-28 14:52:35 +02:00
parent 80df3b5f63
commit 8bfb29b953
7 changed files with 5 additions and 110 deletions
+1
View File
@@ -1,5 +1,6 @@
# 4.0.0 (2026-XX-XX)
* Remove `TemplateVariable` and `AssignTemplateVariable`; use `MacroVariable` and `AssignMacroVariable` instead
* Add the `isAlwaysAllowedInSandbox()` method to `Twig\TwigCallableInterface` and `Twig\TokenParser\TokenParserInterface`
* Always allow printing a `Markup` object in a sandbox, whatever the security policy is
* Remove the `Twig\Sandbox\SourcePolicyInterface` interface and the corresponding argument of `Twig\Extension\SandboxExtension::__construct()`
@@ -20,7 +20,7 @@ use Twig\Node\EmptyNode;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\Expression\Variable\MacroVariable;
use Twig\Parser;
use Twig\Token;
@@ -41,7 +41,7 @@ final class FunctionExpressionParser extends AbstractExpressionParser implements
$name = $expr->getAttribute('name');
if (null !== $alias = $parser->getImportedSymbol('function', $name)) {
/** @var TemplateVariable $var */
/** @var MacroVariable $var */
$var = $alias['node']->getNode('var');
return new MacroReferenceExpression($var, $alias['name'], $this->parseCallableArguments($parser, $line, false), $line);
@@ -19,7 +19,7 @@ use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\Expression\Variable\MacroVariable;
use Twig\Node\Nodes;
use Twig\Parser;
use Twig\Token;
@@ -44,7 +44,7 @@ class IsExpressionParser extends AbstractExpressionParser implements InfixExpres
}
if ('defined' === $test->getName() && $expr instanceof ContextVariable && null !== $alias = $parser->getImportedSymbol('function', $expr->getAttribute('name'))) {
/** @var TemplateVariable $var */
/** @var MacroVariable $var */
$var = $alias['node']->getNode('var');
$expr = new MacroReferenceExpression($var, $alias['name'], new ArrayExpression([], $expr->getTemplateLine()), $expr->getTemplateLine());
}
@@ -1,25 +0,0 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Node\Expression\Variable;
/**
* @deprecated since Twig 3.29, use AssignMacroVariable instead
*/
final class AssignTemplateVariable extends AssignMacroVariable
{
public function __construct(TemplateVariable $var, bool $global = true)
{
trigger_deprecation('twig/twig', '3.29', 'The "%s" class is deprecated, use "%s" instead.', self::class, AssignMacroVariable::class);
parent::__construct($var, $global);
}
}
@@ -1,27 +0,0 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Node\Expression\Variable;
/**
* @deprecated since Twig 3.29, use MacroVariable instead
*/
class TemplateVariable extends MacroVariable
{
public function __construct(string|int|null $name, int $lineno)
{
if (self::class === static::class) {
trigger_deprecation('twig/twig', '3.29', 'The "%s" class is deprecated, use "%s" instead.', self::class, MacroVariable::class);
}
parent::__construct($name, $lineno);
}
}
@@ -12,7 +12,6 @@
namespace Twig\Tests\Node\Expression;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
@@ -20,7 +19,6 @@ use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\Expression\Variable\MacroVariable;
use Twig\Node\Expression\Variable\TemplateVariable;
class MacroReferenceTest extends TestCase
{
@@ -43,29 +41,6 @@ class MacroReferenceTest extends TestCase
yield 'contains NUL byte' => ["foo\x00bar"];
}
#[Group('legacy')]
public function testConstructorAcceptsDeprecatedTemplateVariable(): void
{
$deprecations = [];
set_error_handler(static function (int $type, string $message) use (&$deprecations): bool {
if (\E_USER_DEPRECATED === $type) {
$deprecations[] = $message;
return true;
}
return false;
});
try {
$node = new MacroReferenceExpression(new TemplateVariable('foo', 1), 'macro_foo', new ArrayExpression([], 1), 1);
} finally {
restore_error_handler();
}
$this->assertInstanceOf(TemplateVariable::class, $node->getNode('template'));
$this->assertSame(['Since twig/twig 3.29: The "Twig\\Node\\Expression\\Variable\\TemplateVariable" class is deprecated, use "Twig\\Node\\Expression\\Variable\\MacroVariable" instead.'], $deprecations);
}
public function testConstructorAcceptsAnExpressionAsName(): void
{
$node = new MacroReferenceExpression(new MacroVariable('foo', 1), new ContextVariable('name', 1), new ArrayExpression([], 1), 1);
-29
View File
@@ -20,12 +20,9 @@ namespace Twig\Tests\Node;
* file that was distributed with this source code.
*/
use PHPUnit\Framework\Attributes\Group;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\Variable\AssignMacroVariable;
use Twig\Node\Expression\Variable\AssignTemplateVariable;
use Twig\Node\Expression\Variable\MacroVariable;
use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\ImportNode;
use Twig\Test\NodeTestCase;
@@ -40,32 +37,6 @@ class ImportTest extends NodeTestCase
$this->assertEquals('macro', $node->getNode('var')->getNode('var')->getAttribute('name'));
}
#[Group('legacy')]
public function testConstructorAcceptsDeprecatedAssignTemplateVariable(): void
{
$deprecations = [];
set_error_handler(static function (int $type, string $message) use (&$deprecations): bool {
if (\E_USER_DEPRECATED === $type) {
$deprecations[] = $message;
return true;
}
return false;
});
try {
$node = new ImportNode(new ConstantExpression('foo.twig', 1), new AssignTemplateVariable(new TemplateVariable('macro', 1), true), 1);
} finally {
restore_error_handler();
}
$this->assertInstanceOf(AssignTemplateVariable::class, $node->getNode('var'));
$this->assertSame([
'Since twig/twig 3.29: The "Twig\\Node\\Expression\\Variable\\TemplateVariable" class is deprecated, use "Twig\\Node\\Expression\\Variable\\MacroVariable" instead.',
'Since twig/twig 3.29: The "Twig\\Node\\Expression\\Variable\\AssignTemplateVariable" class is deprecated, use "Twig\\Node\\Expression\\Variable\\AssignMacroVariable" instead.',
], $deprecations);
}
public static function provideTests(): iterable
{
$tests = [];