diff options
author | Armin Ronacher <armin.ronacher@active-4.com> | 2017-01-09 16:50:54 +0100 |
---|---|---|
committer | Armin Ronacher <armin.ronacher@active-4.com> | 2017-01-09 16:50:55 +0100 |
commit | e73c574c2130ac71857b3beb5ebf03bf03de01d7 (patch) | |
tree | 48728686625f0330e1f5633ca9d043a82bd18d99 | |
parent | ef718011e5b33d8b8c8171cc550c4be0e5d27773 (diff) | |
download | jinja2-e73c574c2130ac71857b3beb5ebf03bf03de01d7.tar.gz |
Resolved bad code generation on toplevel ifs
This fixes #651
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | jinja2/compiler.py | 3 | ||||
-rw-r--r-- | tests/test_regression.py | 4 |
3 files changed, 8 insertions, 2 deletions
@@ -9,6 +9,9 @@ Version 2.9.4 - Increment the bytecode cache version which was not done due to an oversight before. - Corrected bad code generation and scoping for filtered loops. (#649) +- Resolved an issue where top-level output silencing after known extend + blocks could generate invalid code when blocks where contained in if + statements. (#651) Version 2.9.3 ------------- diff --git a/jinja2/compiler.py b/jinja2/compiler.py index 2fde59a..48f3210 100644 --- a/jinja2/compiler.py +++ b/jinja2/compiler.py @@ -367,8 +367,7 @@ class CodeGenerator(NodeVisitor): is no buffer a dummy ``if 0: yield None`` is written automatically. """ try: - if not nodes: - self.writeline('pass') + self.writeline('pass') for node in nodes: self.visit(node, frame) except CompilerExit: diff --git a/tests/test_regression.py b/tests/test_regression.py index 83e78af..1d97cf7 100644 --- a/tests/test_regression.py +++ b/tests/test_regression.py @@ -479,3 +479,7 @@ class TestBug(object): '<url><loc>/bar</loc></url>', '</urlset>', ] + + def test_empty_if(self, env): + t = env.from_string('{% if foo %}{% else %}42{% endif %}') + assert t.render(foo=False) == '42' |