From: Arnaud Le Blanc Date: Sun, 28 Nov 2010 20:01:23 +0000 (+0100) Subject: fix parsing of postfix expressions X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=7284fa98294d95cb2d7e9ab2f60ca601d76f2732;p=web%2Fkonrad%2Ftwig.git fix parsing of postfix expressions --- 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