Index: mojo/public/third_party/jinja2/optimizer.py |
diff --git a/mojo/public/third_party/jinja2/optimizer.py b/mojo/public/third_party/jinja2/optimizer.py |
deleted file mode 100644 |
index 00eab115e1c19a86bb1ec64b7cf626fbf413e126..0000000000000000000000000000000000000000 |
--- a/mojo/public/third_party/jinja2/optimizer.py |
+++ /dev/null |
@@ -1,68 +0,0 @@ |
-# -*- coding: utf-8 -*- |
-""" |
- jinja2.optimizer |
- ~~~~~~~~~~~~~~~~ |
- |
- The jinja optimizer is currently trying to constant fold a few expressions |
- and modify the AST in place so that it should be easier to evaluate it. |
- |
- Because the AST does not contain all the scoping information and the |
- compiler has to find that out, we cannot do all the optimizations we |
- want. For example loop unrolling doesn't work because unrolled loops would |
- have a different scoping. |
- |
- The solution would be a second syntax tree that has the scoping rules stored. |
- |
- :copyright: (c) 2010 by the Jinja Team. |
- :license: BSD. |
-""" |
-from jinja2 import nodes |
-from jinja2.visitor import NodeTransformer |
- |
- |
-def optimize(node, environment): |
- """The context hint can be used to perform an static optimization |
- based on the context given.""" |
- optimizer = Optimizer(environment) |
- return optimizer.visit(node) |
- |
- |
-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): |
- """Do constant folding.""" |
- node = self.generic_visit(node) |
- try: |
- return nodes.Const.from_untrusted(node.as_const(), |
- lineno=node.lineno, |
- environment=self.environment) |
- except nodes.Impossible: |
- return node |
- |
- visit_Add = visit_Sub = visit_Mul = visit_Div = visit_FloorDiv = \ |
- visit_Pow = visit_Mod = visit_And = visit_Or = visit_Pos = visit_Neg = \ |
- visit_Not = visit_Compare = visit_Getitem = visit_Getattr = visit_Call = \ |
- visit_Filter = visit_Test = visit_CondExpr = fold |
- del fold |