mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-31 04:27:00 +00:00
Allow trailing commas in macros + functions + filters
This commit is contained in:
committed by
Fabien Potencier
parent
471e965e9e
commit
ccc2dbb043
@@ -1,6 +1,6 @@
|
||||
# 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)
|
||||
|
||||
|
||||
@@ -598,6 +598,11 @@ class ExpressionParser
|
||||
while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
|
||||
if (!empty($args)) {
|
||||
$stream->expect(Token::PUNCTUATION_TYPE, ',', '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 />
|
||||
Reference in New Issue
Block a user