From 7284fa98294d95cb2d7e9ab2f60ca601d76f2732 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sun, 28 Nov 2010 21:01:23 +0100 Subject: [PATCH] fix parsing of postfix expressions --- lib/Twig/ExpressionParser.php | 4 +- .../Tests/Fixtures/expressions/expressions.test | 21 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 test/Twig/Tests/Fixtures/expressions/expressions.test diff --git a/lib/Twig/ExpressionParser.php b/lib/Twig/ExpressionParser.php index a014c94..ff2111f 100644 --- a/lib/Twig/ExpressionParser.php +++ b/lib/Twig/ExpressionParser.php @@ -69,13 +69,13 @@ class Twig_ExpressionParser $expr = $this->parseExpression($operator['precedence']); $class = $operator['class']; - return new $class($expr, $token->getLine()); + return $this->parsePostfixExpression(new $class($expr, $token->getLine())); } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '(')) { $this->parser->getStream()->next(); $expr = $this->parseExpression(); $this->parser->getStream()->expect(Twig_Token::PUNCTUATION_TYPE, ')'); - return $expr; + return $this->parsePostfixExpression($expr); } return $this->parsePrimaryExpression(); diff --git a/test/Twig/Tests/Fixtures/expressions/expressions.test b/test/Twig/Tests/Fixtures/expressions/expressions.test new file mode 100644 index 0000000..db047c0 --- /dev/null +++ b/test/Twig/Tests/Fixtures/expressions/expressions.test @@ -0,0 +1,21 @@ +--TEST-- +Twig parses postfix expressions +--TEMPLATE-- + +{% macro foo() %}foo{% endmacro %} + +{{ 'a' }} +{{ 'a'|upper }} +{{ ('a')|upper }} +{{ -1|upper }} +{{ _self.foo() }} +{{ (_self).foo() }} +--DATA-- +return array(); +--EXPECT-- +a +A +A +-1 +foo +foo -- 1.7.2.5