Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit54684fa

Browse files
committed
ensure compatibility with Twig 3.15
1 parent706d862 commit54684fa

File tree

11 files changed

+68
-35
lines changed

11 files changed

+68
-35
lines changed

‎src/Symfony/Bridge/Twig/Node/DumpNode.php‎

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
useTwig\Attribute\FirstClassTwigCallableReady;
1515
useTwig\Attribute\YieldReady;
1616
useTwig\Compiler;
17+
useTwig\Node\Expression\Variable\LocalVariable;
1718
useTwig\Node\Node;
1819

1920
/**
@@ -22,10 +23,20 @@
2223
#[YieldReady]
2324
finalclass DumpNodeextends Node
2425
{
26+
/**
27+
* @var LocalVariable|string
28+
*/
2529
private$varPrefix;
2630

27-
publicfunction__construct(string$varPrefix, ?Node$values,int$lineno, ?string$tag =null)
31+
/**
32+
* @param LocalVariable|string $varPrefix
33+
*/
34+
publicfunction__construct($varPrefix, ?Node$values,int$lineno, ?string$tag =null)
2835
{
36+
if (!\is_string($varPrefix) && !$varPrefixinstanceof LocalVariable) {
37+
thrownew \TypeError(sprintf('Expected a string or an instance of "%s", but got "%s".', LocalVariable::class,get_debug_type($varPrefix)));
38+
}
39+
2940
$nodes = [];
3041
if (null !==$values) {
3142
$nodes['values'] =$values;
@@ -42,25 +53,31 @@ public function __construct(string $varPrefix, ?Node $values, int $lineno, ?stri
4253

4354
publicfunctioncompile(Compiler$compiler):void
4455
{
56+
if ($this->varPrefixinstanceof LocalVariable) {
57+
$varPrefix =$this->varPrefix->getAttribute('name');
58+
}else {
59+
$varPrefix =$this->varPrefix;
60+
}
61+
4562
$compiler
4663
->write("if (\$this->env->isDebug()) {\n")
4764
->indent();
4865

4966
if (!$this->hasNode('values')) {
5067
// remove embedded templates (macros) from the context
5168
$compiler
52-
->write(sprintf('$%svars = [];'."\n",$this->varPrefix))
53-
->write(sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n",$this->varPrefix))
69+
->write(sprintf('$%svars = [];'."\n",$varPrefix))
70+
->write(sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n",$varPrefix))
5471
->indent()
55-
->write(sprintf('if (!$%sval instanceof \Twig\Template) {'."\n",$this->varPrefix))
72+
->write(sprintf('if (!$%sval instanceof \Twig\Template) {'."\n",$varPrefix))
5673
->indent()
57-
->write(sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n",$this->varPrefix))
74+
->write(sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n",$varPrefix))
5875
->outdent()
5976
->write("}\n")
6077
->outdent()
6178
->write("}\n")
6279
->addDebugInfo($this)
63-
->write(sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n",$this->varPrefix));
80+
->write(sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n",$varPrefix));
6481
}elseif (($values =$this->getNode('values')) &&1 ===$values->count()) {
6582
$compiler
6683
->addDebugInfo($this)

‎src/Symfony/Bridge/Twig/Node/TransNode.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
useTwig\Node\Expression\ArrayExpression;
1919
useTwig\Node\Expression\ConstantExpression;
2020
useTwig\Node\Expression\NameExpression;
21+
useTwig\Node\Expression\Variable\ContextVariable;
2122
useTwig\Node\Node;
2223
useTwig\Node\TextNode;
2324

@@ -126,7 +127,7 @@ private function compileString(Node $body, ArrayExpression $vars, bool $ignoreSt
126127
if ('count' ===$var &&$this->hasNode('count')) {
127128
$vars->addElement($this->getNode('count'),$key);
128129
}else {
129-
$varExpr =newNameExpression($var,$body->getTemplateLine());
130+
$varExpr =class_exists(ContextVariable::class) ?newContextVariable($var,$body->getTemplateLine()) :newNameExpression($var,$body->getTemplateLine());
130131
$varExpr->setAttribute('ignore_strict_check',$ignoreStrictCheck);
131132
$vars->addElement($varExpr,$key);
132133
}

‎src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
useTwig\Node\Expression\ConstantExpression;
2121
useTwig\Node\Expression\FilterExpression;
2222
useTwig\Node\Expression\NameExpression;
23+
useTwig\Node\Expression\Variable\AssignContextVariable;
24+
useTwig\Node\Expression\Variable\ContextVariable;
2325
useTwig\Node\ModuleNode;
2426
useTwig\Node\Node;
2527
useTwig\Node\Nodes;
@@ -51,8 +53,8 @@ public function enterNode(Node $node, Environment $env): Node
5153
return$node;
5254
}else {
5355
$var =$this->getVarName();
54-
$name =newAssignNameExpression($var,$node->getTemplateLine());
55-
$this->scope->set('domain',newNameExpression($var,$node->getTemplateLine()));
56+
$name =class_exists(AssignContextVariable::class) ?newAssignContextVariable($var,$node->getTemplateLine()) :newAssignNameExpression($var,$node->getTemplateLine());
57+
$this->scope->set('domain',class_exists(ContextVariable::class) ?newContextVariable($var,$node->getTemplateLine()) :newNameExpression($var,$node->getTemplateLine()));
5658

5759
if (class_exists(Nodes::class)) {
5860
returnnewSetNode(false,newNodes([$name]),newNodes([$node->getNode('expr')]),$node->getTemplateLine());

‎src/Symfony/Bridge/Twig/Tests/Node/DumpNodeTest.php‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
useTwig\Environment;
1818
useTwig\Loader\LoaderInterface;
1919
useTwig\Node\Expression\NameExpression;
20+
useTwig\Node\Expression\Variable\ContextVariable;
2021
useTwig\Node\Node;
2122
useTwig\Node\Nodes;
2223

@@ -74,7 +75,7 @@ public function testOneVar()
7475
{
7576
if (class_exists(Nodes::class)) {
7677
$vars =newNodes([
77-
newNameExpression('foo',7),
78+
newContextVariable('foo',7),
7879
]);
7980
}else {
8081
$vars =newNode([
@@ -104,8 +105,8 @@ public function testMultiVars()
104105
{
105106
if (class_exists(Nodes::class)) {
106107
$vars =newNodes([
107-
newNameExpression('foo',7),
108-
newNameExpression('bar',7),
108+
newContextVariable('foo',7),
109+
newContextVariable('bar',7),
109110
]);
110111
}else {
111112
$vars =newNode([

‎src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
useTwig\Node\Expression\ArrayExpression;
2323
useTwig\Node\Expression\ConstantExpression;
2424
useTwig\Node\Expression\NameExpression;
25+
useTwig\Node\Expression\Variable\ContextVariable;
2526
useTwig\Node\Node;
2627
useTwig\Node\Nodes;
2728

@@ -31,7 +32,7 @@ class FormThemeTest extends TestCase
3132

3233
publicfunctiontestConstructor()
3334
{
34-
$form =newNameExpression('form',0);
35+
$form =class_exists(ContextVariable::class) ?newContextVariable('form',0) :newNameExpression('form',0);
3536
if (class_exists(Nodes::class)) {
3637
$resources =newNodes([
3738
newConstantExpression('tpl1',0),
@@ -53,7 +54,7 @@ public function testConstructor()
5354

5455
publicfunctiontestCompile()
5556
{
56-
$form =newNameExpression('form',0);
57+
$form =class_exists(ContextVariable::class) ?newContextVariable('form',0) :newNameExpression('form',0);
5758
$resources =newArrayExpression([
5859
newConstantExpression(1,0),
5960
newConstantExpression('tpl1',0),

‎src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
useTwig\Node\Expression\ConditionalExpression;
2323
useTwig\Node\Expression\ConstantExpression;
2424
useTwig\Node\Expression\NameExpression;
25+
useTwig\Node\Expression\Variable\ContextVariable;
2526
useTwig\Node\Node;
2627
useTwig\Node\Nodes;
2728
useTwig\TwigFunction;
@@ -32,7 +33,7 @@ public function testCompileWidget()
3233
{
3334
if (class_exists(Nodes::class)) {
3435
$arguments =newNodes([
35-
newNameExpression('form',0),
36+
newContextVariable('form',0),
3637
]);
3738
}else {
3839
$arguments =newNode([
@@ -61,7 +62,7 @@ public function testCompileWidgetWithVariables()
6162
{
6263
if (class_exists(Nodes::class)) {
6364
$arguments =newNodes([
64-
newNameExpression('form',0),
65+
newContextVariable('form',0),
6566
newArrayExpression([
6667
newConstantExpression('foo',0),
6768
newConstantExpression('bar',0),
@@ -98,7 +99,7 @@ public function testCompileLabelWithLabel()
9899
{
99100
if (class_exists(Nodes::class)) {
100101
$arguments =newNodes([
101-
newNameExpression('form',0),
102+
newContextVariable('form',0),
102103
newConstantExpression('my label',0),
103104
]);
104105
}else {
@@ -129,7 +130,7 @@ public function testCompileLabelWithNullLabel()
129130
{
130131
if (class_exists(Nodes::class)) {
131132
$arguments =newNodes([
132-
newNameExpression('form',0),
133+
newContextVariable('form',0),
133134
newConstantExpression(null,0),
134135
]);
135136
}else {
@@ -162,7 +163,7 @@ public function testCompileLabelWithEmptyStringLabel()
162163
{
163164
if (class_exists(Nodes::class)) {
164165
$arguments =newNodes([
165-
newNameExpression('form',0),
166+
newContextVariable('form',0),
166167
newConstantExpression('',0),
167168
]);
168169
}else {
@@ -195,7 +196,7 @@ public function testCompileLabelWithDefaultLabel()
195196
{
196197
if (class_exists(Nodes::class)) {
197198
$arguments =newNodes([
198-
newNameExpression('form',0),
199+
newContextVariable('form',0),
199200
]);
200201
}else {
201202
$arguments =newNode([
@@ -224,7 +225,7 @@ public function testCompileLabelWithAttributes()
224225
{
225226
if (class_exists(Nodes::class)) {
226227
$arguments =newNodes([
227-
newNameExpression('form',0),
228+
newContextVariable('form',0),
228229
newConstantExpression(null,0),
229230
newArrayExpression([
230231
newConstantExpression('foo',0),
@@ -266,7 +267,7 @@ public function testCompileLabelWithLabelAndAttributes()
266267
{
267268
if (class_exists(Nodes::class)) {
268269
$arguments =newNodes([
269-
newNameExpression('form',0),
270+
newContextVariable('form',0),
270271
newConstantExpression('value in argument',0),
271272
newArrayExpression([
272273
newConstantExpression('foo',0),
@@ -309,7 +310,7 @@ public function testCompileLabelWithLabelThatEvaluatesToNull()
309310
{
310311
if (class_exists(Nodes::class)) {
311312
$arguments =newNodes([
312-
newNameExpression('form',0),
313+
newContextVariable('form',0),
313314
newConditionalExpression(
314315
// if
315316
newConstantExpression(true,0),
@@ -360,7 +361,7 @@ public function testCompileLabelWithLabelThatEvaluatesToNullAndAttributes()
360361
{
361362
if (class_exists(Nodes::class)) {
362363
$arguments =newNodes([
363-
newNameExpression('form',0),
364+
newContextVariable('form',0),
364365
newConditionalExpression(
365366
// if
366367
newConstantExpression(true,0),

‎src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
useTwig\Environment;
1919
useTwig\Loader\LoaderInterface;
2020
useTwig\Node\Expression\NameExpression;
21+
useTwig\Node\Expression\Variable\ContextVariable;
2122
useTwig\Node\TextNode;
2223

2324
/**
@@ -28,7 +29,7 @@ class TransNodeTest extends TestCase
2829
publicfunctiontestCompileStrict()
2930
{
3031
$body =newTextNode('trans %var%',0);
31-
$vars =newNameExpression('foo',0);
32+
$vars =class_exists(ContextVariable::class) ?newContextVariable('foo',0) :newNameExpression('foo',0);
3233
$node =newTransNode($body,null,null,$vars);
3334

3435
$env =newEnvironment($this->createMock(LoaderInterface::class), ['strict_variables' =>true]);

‎src/Symfony/Bridge/Twig/Tests/NodeVisitor/TranslationNodeVisitorTest.php‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
useTwig\Node\Expression\ConstantExpression;
2121
useTwig\Node\Expression\FilterExpression;
2222
useTwig\Node\Expression\NameExpression;
23+
useTwig\Node\Expression\Variable\ContextVariable;
2324
useTwig\Node\Node;
2425
useTwig\Node\Nodes;
2526
useTwig\TwigFilter;
@@ -44,12 +45,12 @@ public function testMessageExtractionWithInvalidDomainNode()
4445
if (class_exists(Nodes::class)) {
4546
$n =newNodes([
4647
newArrayExpression([],0),
47-
newNameExpression('variable',0),
48+
class_exists(ContextVariable::class) ?newContextVariable('variable',0) :newNameExpression('variable',0),
4849
]);
4950
}else {
5051
$n =newNode([
5152
newArrayExpression([],0),
52-
newNameExpression('variable',0),
53+
class_exists(ContextVariable::class) ?newContextVariable('variable',0) :newNameExpression('variable',0),
5354
]);
5455
}
5556

‎src/Symfony/Bridge/Twig/Tests/TokenParser/FormThemeTokenParserTest.php‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
useTwig\Node\Expression\ArrayExpression;
2121
useTwig\Node\Expression\ConstantExpression;
2222
useTwig\Node\Expression\NameExpression;
23+
useTwig\Node\Expression\Variable\ContextVariable;
2324
useTwig\Parser;
2425
useTwig\Source;
2526

@@ -51,7 +52,7 @@ public static function getTestsForFormTheme()
5152
[
5253
'{% form_theme form "tpl1" %}',
5354
newFormThemeNode(
54-
newNameExpression('form',1),
55+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
5556
newArrayExpression([
5657
newConstantExpression(0,1),
5758
newConstantExpression('tpl1',1),
@@ -63,7 +64,7 @@ public static function getTestsForFormTheme()
6364
[
6465
'{% form_theme form "tpl1" "tpl2" %}',
6566
newFormThemeNode(
66-
newNameExpression('form',1),
67+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
6768
newArrayExpression([
6869
newConstantExpression(0,1),
6970
newConstantExpression('tpl1',1),
@@ -77,7 +78,7 @@ public static function getTestsForFormTheme()
7778
[
7879
'{% form_theme form with "tpl1" %}',
7980
newFormThemeNode(
80-
newNameExpression('form',1),
81+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
8182
newConstantExpression('tpl1',1),
8283
1,
8384
'form_theme'
@@ -86,7 +87,7 @@ public static function getTestsForFormTheme()
8687
[
8788
'{% form_theme form with ["tpl1"] %}',
8889
newFormThemeNode(
89-
newNameExpression('form',1),
90+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
9091
newArrayExpression([
9192
newConstantExpression(0,1),
9293
newConstantExpression('tpl1',1),
@@ -98,7 +99,7 @@ public static function getTestsForFormTheme()
9899
[
99100
'{% form_theme form with ["tpl1", "tpl2"] %}',
100101
newFormThemeNode(
101-
newNameExpression('form',1),
102+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
102103
newArrayExpression([
103104
newConstantExpression(0,1),
104105
newConstantExpression('tpl1',1),
@@ -112,7 +113,7 @@ public static function getTestsForFormTheme()
112113
[
113114
'{% form_theme form with ["tpl1", "tpl2"] only %}',
114115
newFormThemeNode(
115-
newNameExpression('form',1),
116+
class_exists(ContextVariable::class) ?newContextVariable('form',1) :newNameExpression('form',1),
116117
newArrayExpression([
117118
newConstantExpression(0,1),
118119
newConstantExpression('tpl1',1),

‎src/Symfony/Bridge/Twig/TokenParser/DumpTokenParser.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespaceSymfony\Bridge\Twig\TokenParser;
1313

1414
useSymfony\Bridge\Twig\Node\DumpNode;
15+
useTwig\Node\Expression\Variable\LocalVariable;
1516
useTwig\Node\Node;
1617
useTwig\Token;
1718
useTwig\TokenParser\AbstractTokenParser;
@@ -40,7 +41,7 @@ public function parse(Token $token): Node
4041
}
4142
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
4243

43-
returnnewDumpNode($this->parser->getVarName(),$values,$token->getLine(),$this->getTag());
44+
returnnewDumpNode(class_exists(LocalVariable::class) ?newLocalVariable(null,$token->getLine()) :$this->parser->getVarName(),$values,$token->getLine(),$this->getTag());
4445
}
4546

4647
/**

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp