summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2017-01-09 16:50:54 +0100
committerArmin Ronacher <armin.ronacher@active-4.com>2017-01-09 16:50:55 +0100
commite73c574c2130ac71857b3beb5ebf03bf03de01d7 (patch)
tree48728686625f0330e1f5633ca9d043a82bd18d99
parentef718011e5b33d8b8c8171cc550c4be0e5d27773 (diff)
downloadjinja2-e73c574c2130ac71857b3beb5ebf03bf03de01d7.tar.gz
Resolved bad code generation on toplevel ifs
This fixes #651
-rw-r--r--CHANGES3
-rw-r--r--jinja2/compiler.py3
-rw-r--r--tests/test_regression.py4
3 files changed, 8 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 84a698a..d280365 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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'