]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Resolved bad code generation on toplevel ifs
authorArmin Ronacher <armin.ronacher@active-4.com>
Mon, 9 Jan 2017 15:50:54 +0000 (16:50 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Mon, 9 Jan 2017 15:50:55 +0000 (16:50 +0100)
This fixes #651

CHANGES
jinja2/compiler.py
tests/test_regression.py

diff --git a/CHANGES b/CHANGES
index 84a698a3a029cbba702c41bfb97d3bf81c18f058..d2803654e87b679692e1371d3a1817f4eda09f24 100644 (file)
--- 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
 -------------
index 2fde59a1ec6fd583b411e3b38725304bb2fed921..48f3210928224efb1f7a1289889fd803d696a6dd 100644 (file)
@@ -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:
index 83e78afbff68f9f7f2e88d4b460877ba612ae31e..1d97cf7604edbbdeaf89543cd1c08e0ab4ec244a 100644 (file)
@@ -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'