]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Fixing compiler handling of parens around boolean comparisons. 938/head
authorSteve Norum <stevenorum@gmail.com>
Sat, 12 Jan 2019 16:39:49 +0000 (11:39 -0500)
committerSteve Norum <stevenorum@gmail.com>
Sat, 12 Jan 2019 16:39:49 +0000 (11:39 -0500)
jinja2/compiler.py
tests/test_lexnparse.py

index 5135a7714b5f8cbbbc3fb188d572978f19a259ce..c0eb24001e5b6c5921e8fc745cdfcb1dc4da4f9c 100644 (file)
@@ -1529,9 +1529,11 @@ class CodeGenerator(NodeVisitor):
 
     @optimizeconst
     def visit_Compare(self, node, frame):
+        self.write('(')
         self.visit(node.expr, frame)
         for op in node.ops:
             self.visit(op, frame)
+        self.write(')')
 
     def visit_Operand(self, node, frame):
         self.write(' %s ' % operators[node.op])
index a61c1467c114bb4c685c209d0b7ffaa82c85eb64..5c4c2737f91fe748eb9e804e33e27e755a67465b 100644 (file)
@@ -332,6 +332,12 @@ class TestSyntax(object):
                                '{{ 2 == 2 }}|{{ 1 <= 1 }}')
         assert tmpl.render() == 'True|True|True|True|True'
 
+    def test_compare_parens(self, env):
+        tmpl = env.from_string(
+            "{{ i*(j<5) }}"
+        )
+        assert tmpl.render(i=2, j=3) == '2'
+
     def test_inop(self, env):
         tmpl = env.from_string('{{ 1 in [1, 2, 3] }}|{{ 1 not in [1, 2, 3] }}')
         assert tmpl.render() == 'True|False'