summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Norum <stevenorum@gmail.com>2019-01-12 11:39:49 -0500
committerSteve Norum <stevenorum@gmail.com>2019-01-12 11:39:49 -0500
commiteca6fbfd6f4f60d3503dba7253cfb941d0751365 (patch)
tree1045e9d058ae1e9bf863e51275197ea55f57bbb0
parent9fe9520f2daa1df6079b188adba758d6e03d6af2 (diff)
downloadjinja2-eca6fbfd6f4f60d3503dba7253cfb941d0751365.tar.gz
Fixing compiler handling of parens around boolean comparisons.
-rw-r--r--jinja2/compiler.py2
-rw-r--r--tests/test_lexnparse.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 5135a77..c0eb240 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -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])
diff --git a/tests/test_lexnparse.py b/tests/test_lexnparse.py
index a61c146..5c4c273 100644
--- a/tests/test_lexnparse.py
+++ b/tests/test_lexnparse.py
@@ -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'