summaryrefslogtreecommitdiff
path: root/jinja2/optimizer.py
diff options
context:
space:
mode:
Diffstat (limited to 'jinja2/optimizer.py')
-rw-r--r--jinja2/optimizer.py23
1 files changed, 2 insertions, 21 deletions
diff --git a/jinja2/optimizer.py b/jinja2/optimizer.py
index 00eab11..263db90 100644
--- a/jinja2/optimizer.py
+++ b/jinja2/optimizer.py
@@ -32,30 +32,11 @@ class Optimizer(NodeTransformer):
def __init__(self, environment):
self.environment = environment
- def visit_If(self, node):
- """Eliminate dead code."""
- # do not optimize ifs that have a block inside so that it doesn't
- # break super().
- if node.find(nodes.Block) is not None:
- return self.generic_visit(node)
- try:
- val = self.visit(node.test).as_const()
- except nodes.Impossible:
- return self.generic_visit(node)
- if val:
- body = node.body
- else:
- body = node.else_
- result = []
- for node in body:
- result.extend(self.visit_list(node))
- return result
-
- def fold(self, node):
+ def fold(self, node, eval_ctx=None):
"""Do constant folding."""
node = self.generic_visit(node)
try:
- return nodes.Const.from_untrusted(node.as_const(),
+ return nodes.Const.from_untrusted(node.as_const(eval_ctx),
lineno=node.lineno,
environment=self.environment)
except nodes.Impossible: