Skip to content

Commit 44a3db3

Browse files
Merge branch '7.1' into 7.2
* 7.1: initialize RedisAdapter cursor to 0 do not skip tests from data providers ensure compatibility with Twig 3.15 [Mime] fix encoding issue with UTF-8 addresses containing doubles spaces fix translation file syntax [Notifier] Improve Telegrams markdown escaping [Validator] [Choice] Fix callback option if not array returned [DependencyInjection] Fix linting factories implemented via __callStatic [DependencyInjection] Fix replacing abstract arguments with bindings [DependencyInjection] Fix parsing nested AutowireInline attributes Minor fixes around parse_url() checks Ensure compatibility with mongodb v2 Add missing translations for Turkish (tr)
2 parents 5feb749 + 50d025d commit 44a3db3

39 files changed

+266
-117
lines changed

src/Symfony/Bridge/Twig/Command/DebugCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ private function getRelativePath(string $path): string
553553

554554
private function isAbsolutePath(string $file): bool
555555
{
556-
return strspn($file, '/\\', 0, 1) || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && strspn($file, '/\\', 2, 1)) || null !== parse_url($file, \PHP_URL_SCHEME);
556+
return strspn($file, '/\\', 0, 1) || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && strspn($file, '/\\', 2, 1)) || parse_url($file, \PHP_URL_SCHEME);
557557
}
558558

559559
/**

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Twig\Attribute\YieldReady;
1515
use Twig\Compiler;
16+
use Twig\Node\Expression\Variable\LocalVariable;
1617
use Twig\Node\Node;
1718

1819
/**
@@ -22,7 +23,7 @@
2223
final class DumpNode extends Node
2324
{
2425
public function __construct(
25-
private string $varPrefix,
26+
private LocalVariable|string $varPrefix,
2627
?Node $values,
2728
int $lineno,
2829
) {
@@ -36,25 +37,31 @@ public function __construct(
3637

3738
public function compile(Compiler $compiler): void
3839
{
40+
if ($this->varPrefix instanceof LocalVariable) {
41+
$varPrefix = $this->varPrefix->getAttribute('name');
42+
} else {
43+
$varPrefix = $this->varPrefix;
44+
}
45+
3946
$compiler
4047
->write("if (\$this->env->isDebug()) {\n")
4148
->indent();
4249

4350
if (!$this->hasNode('values')) {
4451
// remove embedded templates (macros) from the context
4552
$compiler
46-
->write(\sprintf('$%svars = [];'."\n", $this->varPrefix))
47-
->write(\sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n", $this->varPrefix))
53+
->write(\sprintf('$%svars = [];'."\n", $varPrefix))
54+
->write(\sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n", $varPrefix))
4855
->indent()
49-
->write(\sprintf('if (!$%sval instanceof \Twig\Template) {'."\n", $this->varPrefix))
56+
->write(\sprintf('if (!$%sval instanceof \Twig\Template) {'."\n", $varPrefix))
5057
->indent()
51-
->write(\sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n", $this->varPrefix))
58+
->write(\sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n", $varPrefix))
5259
->outdent()
5360
->write("}\n")
5461
->outdent()
5562
->write("}\n")
5663
->addDebugInfo($this)
57-
->write(\sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n", $this->varPrefix));
64+
->write(\sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n", $varPrefix));
5865
} elseif (($values = $this->getNode('values')) && 1 === $values->count()) {
5966
$compiler
6067
->addDebugInfo($this)

src/Symfony/Bridge/Twig/Node/StopwatchNode.php

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

1920
/**
@@ -24,9 +25,13 @@
2425
#[YieldReady]
2526
final class StopwatchNode extends Node
2627
{
27-
public function __construct(Node $name, Node $body, AssignNameExpression $var, int $lineno = 0)
28+
public function __construct(Node $name, Node $body, AssignNameExpression|LocalVariable $var, int $lineno = 0)
2829
{
29-
parent::__construct(['body' => $body, 'name' => $name, 'var' => $var], [], $lineno);
30+
if (class_exists(FirstClassTwigCallableReady::class)) {
31+
parent::__construct(['body' => $body, 'name' => $name, 'var' => $var], [], $lineno);
32+
} else {
33+
parent::__construct(['body' => $body, 'name' => $name, 'var' => $var], [], $lineno, $tag);
34+
}
3035
}
3136

3237
public function compile(Compiler $compiler): void

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Twig\Node\Expression\ArrayExpression;
1818
use Twig\Node\Expression\ConstantExpression;
1919
use Twig\Node\Expression\NameExpression;
20+
use Twig\Node\Expression\Variable\ContextVariable;
2021
use Twig\Node\Node;
2122
use Twig\Node\TextNode;
2223

@@ -119,7 +120,7 @@ private function compileString(Node $body, ArrayExpression $vars, bool $ignoreSt
119120
if ('count' === $var && $this->hasNode('count')) {
120121
$vars->addElement($this->getNode('count'), $key);
121122
} else {
122-
$varExpr = new NameExpression($var, $body->getTemplateLine());
123+
$varExpr = class_exists(ContextVariable::class) ? new ContextVariable($var, $body->getTemplateLine()) : new NameExpression($var, $body->getTemplateLine());
123124
$varExpr->setAttribute('ignore_strict_check', $ignoreStrictCheck);
124125
$vars->addElement($varExpr, $key);
125126
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
use Twig\Node\Expression\ConstantExpression;
2121
use Twig\Node\Expression\FilterExpression;
2222
use Twig\Node\Expression\NameExpression;
23+
use Twig\Node\Expression\Variable\AssignContextVariable;
24+
use Twig\Node\Expression\Variable\ContextVariable;
2325
use Twig\Node\ModuleNode;
2426
use Twig\Node\Node;
2527
use Twig\Node\Nodes;
@@ -53,8 +55,9 @@ public function enterNode(Node $node, Environment $env): Node
5355
return $node;
5456
}
5557

56-
$name = new AssignNameExpression(self::INTERNAL_VAR_NAME, $node->getTemplateLine());
57-
$this->scope->set('domain', new NameExpression(self::INTERNAL_VAR_NAME, $node->getTemplateLine()));
58+
$var = $this->getVarName();
59+
$name = class_exists(AssignContextVariable::class) ? new AssignContextVariable($var, $node->getTemplateLine()) : new AssignNameExpression($var, $node->getTemplateLine());
60+
$this->scope->set('domain', class_exists(ContextVariable::class) ? new ContextVariable($var, $node->getTemplateLine()) : new NameExpression($var, $node->getTemplateLine()));
5861

5962
if (class_exists(Nodes::class)) {
6063
return new SetNode(false, new Nodes([$name]), new Nodes([$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
use Twig\Environment;
1818
use Twig\Loader\LoaderInterface;
1919
use Twig\Node\Expression\NameExpression;
20+
use Twig\Node\Expression\Variable\ContextVariable;
2021
use Twig\Node\Node;
2122
use Twig\Node\Nodes;
2223

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

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
use Twig\Node\Expression\ArrayExpression;
2323
use Twig\Node\Expression\ConstantExpression;
2424
use Twig\Node\Expression\NameExpression;
25+
use Twig\Node\Expression\Variable\ContextVariable;
2526
use Twig\Node\Node;
2627
use Twig\Node\Nodes;
2728

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

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

5455
public function testCompile()
5556
{
56-
$form = new NameExpression('form', 0);
57+
$form = class_exists(ContextVariable::class) ? new ContextVariable('form', 0) : new NameExpression('form', 0);
5758
$resources = new ArrayExpression([
5859
new ConstantExpression(1, 0),
5960
new ConstantExpression('tpl1', 0),

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Twig\Node\Expression\ConditionalExpression;
2222
use Twig\Node\Expression\ConstantExpression;
2323
use Twig\Node\Expression\NameExpression;
24+
use Twig\Node\Expression\Variable\ContextVariable;
2425
use Twig\Node\Node;
2526
use Twig\Node\Nodes;
2627
use Twig\TwigFunction;
@@ -31,7 +32,7 @@ public function testCompileWidget()
3132
{
3233
if (class_exists(Nodes::class)) {
3334
$arguments = new Nodes([
34-
new NameExpression('form', 0),
35+
new ContextVariable('form', 0),
3536
]);
3637
} else {
3738
$arguments = new Node([
@@ -56,7 +57,7 @@ public function testCompileWidgetWithVariables()
5657
{
5758
if (class_exists(Nodes::class)) {
5859
$arguments = new Nodes([
59-
new NameExpression('form', 0),
60+
new ContextVariable('form', 0),
6061
new ArrayExpression([
6162
new ConstantExpression('foo', 0),
6263
new ConstantExpression('bar', 0),
@@ -89,7 +90,7 @@ public function testCompileLabelWithLabel()
8990
{
9091
if (class_exists(Nodes::class)) {
9192
$arguments = new Nodes([
92-
new NameExpression('form', 0),
93+
new ContextVariable('form', 0),
9394
new ConstantExpression('my label', 0),
9495
]);
9596
} else {
@@ -116,7 +117,7 @@ public function testCompileLabelWithNullLabel()
116117
{
117118
if (class_exists(Nodes::class)) {
118119
$arguments = new Nodes([
119-
new NameExpression('form', 0),
120+
new ContextVariable('form', 0),
120121
new ConstantExpression(null, 0),
121122
]);
122123
} else {
@@ -145,7 +146,7 @@ public function testCompileLabelWithEmptyStringLabel()
145146
{
146147
if (class_exists(Nodes::class)) {
147148
$arguments = new Nodes([
148-
new NameExpression('form', 0),
149+
new ContextVariable('form', 0),
149150
new ConstantExpression('', 0),
150151
]);
151152
} else {
@@ -174,7 +175,7 @@ public function testCompileLabelWithDefaultLabel()
174175
{
175176
if (class_exists(Nodes::class)) {
176177
$arguments = new Nodes([
177-
new NameExpression('form', 0),
178+
new ContextVariable('form', 0),
178179
]);
179180
} else {
180181
$arguments = new Node([
@@ -199,7 +200,7 @@ public function testCompileLabelWithAttributes()
199200
{
200201
if (class_exists(Nodes::class)) {
201202
$arguments = new Nodes([
202-
new NameExpression('form', 0),
203+
new ContextVariable('form', 0),
203204
new ConstantExpression(null, 0),
204205
new ArrayExpression([
205206
new ConstantExpression('foo', 0),
@@ -237,7 +238,7 @@ public function testCompileLabelWithLabelAndAttributes()
237238
{
238239
if (class_exists(Nodes::class)) {
239240
$arguments = new Nodes([
240-
new NameExpression('form', 0),
241+
new ContextVariable('form', 0),
241242
new ConstantExpression('value in argument', 0),
242243
new ArrayExpression([
243244
new ConstantExpression('foo', 0),
@@ -276,7 +277,7 @@ public function testCompileLabelWithLabelThatEvaluatesToNull()
276277
{
277278
if (class_exists(Nodes::class)) {
278279
$arguments = new Nodes([
279-
new NameExpression('form', 0),
280+
new ContextVariable('form', 0),
280281
new ConditionalExpression(
281282
// if
282283
new ConstantExpression(true, 0),
@@ -323,7 +324,7 @@ public function testCompileLabelWithLabelThatEvaluatesToNullAndAttributes()
323324
{
324325
if (class_exists(Nodes::class)) {
325326
$arguments = new Nodes([
326-
new NameExpression('form', 0),
327+
new ContextVariable('form', 0),
327328
new ConditionalExpression(
328329
// if
329330
new ConstantExpression(true, 0),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Twig\Environment;
1818
use Twig\Loader\LoaderInterface;
1919
use Twig\Node\Expression\NameExpression;
20+
use Twig\Node\Expression\Variable\ContextVariable;
2021
use Twig\Node\TextNode;
2122

2223
/**
@@ -27,7 +28,7 @@ class TransNodeTest extends TestCase
2728
public function testCompileStrict()
2829
{
2930
$body = new TextNode('trans %var%', 0);
30-
$vars = new NameExpression('foo', 0);
31+
$vars = class_exists(ContextVariable::class) ? new ContextVariable('foo', 0) : new NameExpression('foo', 0);
3132
$node = new TransNode($body, null, null, $vars);
3233

3334
$env = new Environment($this->createMock(LoaderInterface::class), ['strict_variables' => true]);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Twig\Node\Expression\ConstantExpression;
2020
use Twig\Node\Expression\FilterExpression;
2121
use Twig\Node\Expression\NameExpression;
22+
use Twig\Node\Expression\Variable\ContextVariable;
2223
use Twig\Node\Node;
2324
use Twig\Node\Nodes;
2425
use Twig\TwigFilter;
@@ -43,7 +44,7 @@ public function testMessageExtractionWithInvalidDomainNode()
4344
if (class_exists(Nodes::class)) {
4445
$n = new Nodes([
4546
new ArrayExpression([], 0),
46-
new NameExpression('variable', 0),
47+
new ContextVariable('variable', 0),
4748
]);
4849
} else {
4950
$n = new Node([

0 commit comments

Comments
 (0)