]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Fixed a loop bug. This fixes #100
authorArmin Ronacher <armin.ronacher@active-4.com>
Sun, 19 May 2013 11:44:50 +0000 (12:44 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sun, 19 May 2013 11:44:50 +0000 (12:44 +0100)
jinja2/compiler.py
jinja2/testsuite/regression.py

index 59d770f5327819b16fbb21c072a2b082ffdf1bc4..02df8c528e5c4f6e11c3cd3ebf2094781e70cb25 100644 (file)
@@ -1066,6 +1066,7 @@ class CodeGenerator(NodeVisitor):
         # make sure the loop variable is a special one and raise a template
         # assertion error if a loop tries to write to loop
         if extended_loop:
+            self.writeline('l_loop = missing')
             loop_frame.identifiers.add_special('loop')
         for name in node.find_all(nodes.Name):
             if name.ctx == 'store' and name.name == 'loop':
index 4198259feca1c9e121834bb11b8d1e46686e7c85..a4e66311b8c7012ceaf2bc61a657c7cc3bdfaf62 100644 (file)
@@ -237,6 +237,16 @@ class BugTestCase(JinjaTestCase):
         {% endfor %}
         """)
 
+    def test_else_loop_bug(self):
+        t = Template('''
+            {% for x in y %}
+                {{ loop.index0 }}
+            {% else %}
+                {% for i in range(3) %}{{ i }}{% endfor %}
+            {% endfor %}
+        ''')
+        self.assertEqual(t.render(y=[]).strip(), '012')
+
     def test_correct_prefix_loader_name(self):
         env = Environment(loader=PrefixLoader({
             'foo':  DictLoader({})