Merge branch '1.x' into 2.x

* 1.x:
  Allow trailing commas in macros + functions + filters
This commit is contained in:
Fabien Potencier
2020-07-06 13:59:53 +02:00
5 changed files with 47 additions and 1 deletions
+1 -1
View File
@@ -316,7 +316,7 @@
# 1.43.1 (2020-XX-XX)
* n/a
* Allow trailing commas in argument lists (in calls as well as definitions)
# 1.43.0 (2020-07-05)
+5
View File
@@ -584,6 +584,11 @@ class ExpressionParser
while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) {
if (!empty($args)) {
$stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'Arguments must be separated by a comma');
// if the comma above was a trailing comma, early exit the argument parse loop
if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) {
break;
}
}
if ($definition) {
@@ -0,0 +1,8 @@
--TEST--
filters allow trailing commas in their argument list
--TEMPLATE--
{{ 42.55|round(1, 'floor',) }}
--DATA--
return []
--EXPECT--
42.5
@@ -0,0 +1,8 @@
--TEST--
functions allow trailing commas in their argument list
--TEMPLATE--
{{ max(1, 2, 3,) }}
--DATA--
return []
--EXPECT--
3
@@ -0,0 +1,25 @@
--TEST--
macros allow trailing commas in their argument and parameter list
--TEMPLATE--
{% import _self as test %}
{% macro test(a, b,) -%}
{{ a|default('a') }}<br />
{{- b|default('b') }}<br />
{%- endmacro %}
{% macro test2(a, b) -%}
{{ a|default('a') }}<br />
{{- b|default('b') }}<br />
{%- endmacro %}
{{ test.test(1, 2,) }}
{{ test.test(3, 4) }}
{{ test.test2(5, 6,) }}
{{ test.test2(7, 8) }}
--DATA--
return []
--EXPECT--
1<br />2<br />
3<br />4<br />
5<br />6<br />
7<br />8<br />