diff --git a/lib/Twig/ExpressionParser.php b/lib/Twig/ExpressionParser.php index 57d3030e0..8e5e81a34 100644 --- a/lib/Twig/ExpressionParser.php +++ b/lib/Twig/ExpressionParser.php @@ -302,6 +302,12 @@ class Twig_ExpressionParser if (!empty($elements)) { $this->parser->getStream()->expect(Twig_Token::OPERATOR_TYPE, ','); + + // trailing ,? + if ($this->parser->getStream()->test(Twig_Token::OPERATOR_TYPE, ']')) + { + return new Twig_Node_Expression_Array($elements, $this->parser->getCurrentToken()->getLine()); + } } // hash or array element? diff --git a/test/fixtures/expressions/array.test b/test/fixtures/expressions/array.test index 21bff14ad..3ebdeaaad 100644 --- a/test/fixtures/expressions/array.test +++ b/test/fixtures/expressions/array.test @@ -19,6 +19,14 @@ Twig supports array notation {# elements can be any expression #} {{ ['foo'|upper, bar|upper, bar == foo]|join(',') }} + +{# arrays can have a trailing , like in PHP #} +{{ + [ + 1, + 2, + ]|join(',') +}} --DATA-- return array('bar' => 'bar', 'foo' => array('bar' => 'bar')) --EXPECT-- @@ -36,3 +44,6 @@ bar FOO,BAR, + + +1,2