From e8acd5b6b0554c069fec5e5002fd2d527a0475c6 Mon Sep 17 00:00:00 2001 From: Cory Benfield Date: Sat, 18 May 2013 11:58:57 +0100 Subject: [PATCH] Python 2.6+ supports conditional expressions. --- jinja2/compiler.py | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/jinja2/compiler.py b/jinja2/compiler.py index 5c7f1a61..24bf252e 100644 --- a/jinja2/compiler.py +++ b/jinja2/compiler.py @@ -36,14 +36,6 @@ operators = { 'notin': 'not in' } -try: - exec('(0 if 0 else 0)') -except SyntaxError: - have_condexpr = False -else: - have_condexpr = True - - # what method to iterate over items do we want to use for dict iteration # in generated code? on 2.x let's go with iteritems, on 3.x with items if hasattr(dict, 'iteritems'): @@ -1565,22 +1557,13 @@ class CodeGenerator(NodeVisitor): 'expression on %s evaluated to false and ' 'no else section was defined.' % self.position(node))) - if not have_condexpr: - self.write('((') - self.visit(node.test, frame) - self.write(') and (') - self.visit(node.expr1, frame) - self.write(',) or (') - write_expr2() - self.write(',))[0]') - else: - self.write('(') - self.visit(node.expr1, frame) - self.write(' if ') - self.visit(node.test, frame) - self.write(' else ') - write_expr2() - self.write(')') + self.write('(') + self.visit(node.expr1, frame) + self.write(' if ') + self.visit(node.test, frame) + self.write(' else ') + write_expr2() + self.write(')') def visit_Call(self, node, frame, forward_caller=False): if self.environment.sandboxed: -- 2.47.2