Issue #3488365 by andypost: Upgrade twig/twig to 3.15.0

merge-requests/10437/head
Dave Long 2024-11-27 09:26:08 +00:00
parent 252448a006
commit 9bff4f2d72
No known key found for this signature in database
GPG Key ID: ED52AE211E142771
8 changed files with 27 additions and 21 deletions

16
composer.lock generated
View File

@ -496,7 +496,7 @@
"dist": {
"type": "path",
"url": "core",
"reference": "60fa149dea68d06e2de45c93bf07d1d94b5394e7"
"reference": "7369e7a4e89825b0e5c1c8c3a4beaa3a18e5f3ef"
},
"require": {
"asm89/stack-cors": "^2.1",
@ -541,7 +541,7 @@
"symfony/serializer": "^6.4",
"symfony/validator": "^6.4",
"symfony/yaml": "^6.4",
"twig/twig": "^3.14.2"
"twig/twig": "^3.15.0"
},
"conflict": {
"drush/drush": "<12.4.3"
@ -4347,16 +4347,16 @@
},
{
"name": "twig/twig",
"version": "v3.14.2",
"version": "v3.15.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a"
"reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a",
"reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02",
"reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02",
"shasum": ""
},
"require": {
@ -4410,7 +4410,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.14.2"
"source": "https://github.com/twigphp/Twig/tree/v3.15.0"
},
"funding": [
{
@ -4422,7 +4422,7 @@
"type": "tidelift"
}
],
"time": "2024-11-07T12:36:22+00:00"
"time": "2024-11-17T15:59:19+00:00"
}
],
"packages-dev": [

View File

@ -61,6 +61,6 @@
"symfony/var-dumper": "~v6.4.15",
"symfony/var-exporter": "~v6.4.13",
"symfony/yaml": "~v6.4.13",
"twig/twig": "~v3.14.2"
"twig/twig": "~v3.15.0"
}
}

View File

@ -33,7 +33,7 @@
"symfony/process": "^6.4",
"symfony/polyfill-iconv": "^1.26",
"symfony/yaml": "^6.4",
"twig/twig": "^3.14.2",
"twig/twig": "^3.15.0",
"doctrine/annotations": "^1.14",
"guzzlehttp/guzzle": "^7.5",
"guzzlehttp/psr7": "^2.4.5",

View File

@ -9,6 +9,7 @@ use Drupal\Core\Render\Component\Exception\ComponentNotFoundException;
use Drupal\Core\Render\Component\Exception\InvalidComponentException;
use Drupal\Core\Theme\ComponentPluginManager;
use Twig\Environment;
use Twig\Node\Nodes;
use Twig\TwigFunction;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FunctionExpression;
@ -57,24 +58,24 @@ class ComponentNodeVisitor implements NodeVisitorInterface {
}
$print_nodes[] = new PrintNode(new FunctionExpression(
new TwigFunction('attach_library', [$env->getExtension(TwigExtension::class), 'attachLibrary']),
new Node([new ConstantExpression($component->getLibraryName(), $line)]),
new Nodes([new ConstantExpression($component->getLibraryName(), $line)]),
$line
), $line);
$print_nodes[] = new PrintNode(new FunctionExpression(
new TwigFunction('add_component_context', [$env->getExtension(ComponentsTwigExtension::class), 'addAdditionalContext'], ['needs_context' => TRUE]),
new Node([new ConstantExpression($component_id, $line)]),
new Nodes([new ConstantExpression($component_id, $line)]),
$line
), $line);
$print_nodes[] = new PrintNode(new FunctionExpression(
new TwigFunction('validate_component_props', [$env->getExtension(ComponentsTwigExtension::class), 'validateProps'], ['needs_context' => TRUE]),
new Node([new ConstantExpression($component_id, $line)]),
new Nodes([new ConstantExpression($component_id, $line)]),
$line
), $line);
// Append the print nodes to the display_start node.
$node->setNode(
'display_start',
new Node([
new Nodes([
$node->getNode('display_start'),
...$print_nodes,
]),
@ -84,7 +85,7 @@ class ComponentNodeVisitor implements NodeVisitorInterface {
// Append the closing comment to the display_end node.
$node->setNode(
'display_end',
new Node([
new Nodes([
new PrintNode(new ConstantExpression(sprintf('<!-- %s Component end: %s -->', $emoji, $component_id), $line), $line),
$node->getNode('display_end'),
])

View File

@ -13,7 +13,9 @@ use Twig\Node\Expression\FunctionExpression;
use Twig\Node\Expression\GetAttrExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\TempNameExpression;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\Node;
use Twig\Node\Nodes;
use Twig\Node\PrintNode;
/**
@ -178,7 +180,7 @@ class TwigNodeTrans extends Node {
if (!is_null($args)) {
$argName = $args->getAttribute('name');
}
$expr = new NameExpression($argName, $n->getTemplateLine());
$expr = new ContextVariable($argName, $n->getTemplateLine());
}
$placeholder = sprintf('%s%s', $argPrefix, $argName);
$text .= $placeholder;
@ -198,7 +200,7 @@ class TwigNodeTrans extends Node {
}
return [
new Node([new ConstantExpression(trim($text), $body->getTemplateLine())]),
new Nodes([new ConstantExpression(trim($text), $body->getTemplateLine())]),
$tokens,
];
}

View File

@ -3,6 +3,7 @@
namespace Drupal\Core\Template;
use Twig\Environment;
use Twig\Node\Nodes;
use Twig\TwigFunction;
use Twig\Node\Expression\FilterExpression;
use Twig\Node\Expression\FunctionExpression;
@ -50,7 +51,7 @@ class TwigNodeVisitor implements NodeVisitorInterface {
return new $class(
new FunctionExpression(
new TwigFunction('render_var', [$env->getExtension(TwigExtension::class), 'renderVar']),
new Node([$node->getNode('expr')]),
new Nodes([$node->getNode('expr')]),
$line
),
$line

View File

@ -7,6 +7,7 @@ use Twig\Node\Expression\AssignNameExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\Node\Nodes;
use Twig\NodeVisitor\NodeVisitorInterface;
/**
@ -59,7 +60,7 @@ class TwigNodeVisitorCheckDeprecations implements NodeVisitorInterface {
// At the end of the template, check the used variables are not deprecated.
if ($node instanceof ModuleNode) {
if (!empty($this->usedNames)) {
$checkNode = new Node([new TwigNodeCheckDeprecations($this->usedNames), $node->getNode('display_end')]);
$checkNode = new Nodes([new TwigNodeCheckDeprecations($this->usedNames), $node->getNode('display_end')]);
$node->setNode('display_end', $checkNode);
}
}

View File

@ -7,6 +7,7 @@ use Drupal\sdc_other_node_visitor\Twig\Profiler\LeaveProfileNode;
use Twig\Environment;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\Node\Nodes;
use Twig\NodeVisitor\NodeVisitorInterface;
/**
@ -44,11 +45,11 @@ final class TestNodeVisitor implements NodeVisitorInterface {
*/
public function leaveNode(Node $node, Environment $env): ?Node {
if ($node instanceof ModuleNode) {
$node->setNode('display_start', new Node([
$node->setNode('display_start', new Nodes([
new EnterProfileNode($this->extensionName, $this->varName),
$node->getNode('display_start'),
]));
$node->setNode('display_end', new Node([
$node->setNode('display_end', new Nodes([
new LeaveProfileNode($this->varName),
$node->getNode('display_end'),
]));