Jinja2 Changelog
================
+Version 2.9.1
+-------------
+(bugfix release, release date undecided)
+
+- Fixed a regression that caused for loops to not be able to use the same
+ variable for the target as well as source iterator. (#640)
+
Version 2.9.1
-------------
(bugfix release, released on January 7th 2017)
else:
if self.environment.is_async:
self.write('auto_aiter(')
- self.visit(node.iter, loop_frame)
+ self.visit(node.iter, frame)
if self.environment.is_async:
self.write(')')
self.write(' if (')
else:
if self.environment.is_async and not extended_loop:
self.write('auto_aiter(')
- self.visit(node.iter, loop_frame)
+ self.visit(node.iter, frame)
if self.environment.is_async and not extended_loop:
self.write(')')
assert t.module.link_detail('circle', 'Index', '/') == (
'<p><span class="fa fa-fw fa-circle">'
'</span><a href="/">Index</a></p>')
+
+ def test_variable_reuse(self, env):
+ t = env.from_string('{% for x in x.y %}{{ x }}{% endfor %}')
+ assert t.render(x={'y': [0, 1, 2]}) == '012'
+
+ t = env.from_string('{% for x in x.y %}{{ loop.index0 }}|{{ x }}{% endfor %}')
+ assert t.render(x={'y': [0, 1, 2]}) == '0|01|12|2'
+
+ t = env.from_string('{% for x in x.y recursive %}{{ x }}{% endfor %}')
+ assert t.render(x={'y': [0, 1, 2]}) == '012'