fixed regression
authorFabien Potencier <fabien.potencier@gmail.com>
Tue, 11 Dec 2012 14:22:37 +0000 (15:22 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 11 Dec 2012 14:22:37 +0000 (15:22 +0100)
lib/Twig/TokenParser/For.php
test/Twig/Tests/Fixtures/tags/for/condition.test

index aef4f17..98a6d07 100644 (file)
@@ -86,7 +86,7 @@ class Twig_TokenParser_For extends Twig_TokenParser
     // the loop variable cannot be used in the condition
     protected function checkLoopUsageCondition(Twig_TokenStream $stream, Twig_NodeInterface $node)
     {
-        if ($node instanceof Twig_Node_Expression_GetAttr && 'loop' == $node->getNode('node')->getAttribute('name')) {
+        if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) {
             throw new Twig_Error_Syntax('The "loop" variable cannot be used in a looping condition', $node->getLine(), $stream->getFilename());
         }
 
@@ -103,7 +103,7 @@ class Twig_TokenParser_For extends Twig_TokenParser
     // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include)
     protected function checkLoopUsageBody(Twig_TokenStream $stream, Twig_NodeInterface $node)
     {
-        if ($node instanceof Twig_Node_Expression_GetAttr && 'loop' == $node->getNode('node')->getAttribute('name')) {
+        if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) {
             $attribute = $node->getNode('attribute');
             if ($attribute instanceof Twig_Node_Expression_Constant && in_array($attribute->getAttribute('value'), array('length', 'revindex0', 'revindex', 'last'))) {
                 throw new Twig_Error_Syntax(sprintf('The "loop.%s" variable is not defined when looping with a condition', $attribute->getAttribute('value')), $node->getLine(), $stream->getFilename());
index 9e4eb9b..380531f 100644 (file)
@@ -2,13 +2,13 @@
 "for" tag takes a condition
 --TEMPLATE--
 {% for i in 1..5 if i is odd -%}
-    {{ loop.index }}.{{ i }}
+    {{ loop.index }}.{{ i }}{{ foo.bar }}
 {% endfor %}
 --DATA--
-return array()
+return array('foo' => array('bar' => 'X'))
 --CONFIG--
 return array('strict_variables' => false)
 --EXPECT--
-1.1
-2.3
-3.5
+1.1X
+2.3X
+3.5X