diff options
author | Adrian Moennich <adrian@planetcoding.net> | 2017-08-22 22:59:57 +0200 |
---|---|---|
committer | Adrian Moennich <adrian@planetcoding.net> | 2017-08-22 23:12:09 +0200 |
commit | cde2a54b87876bd02b283db2f52aca3d9272a92c (patch) | |
tree | 2cce6a0e6958fdb7d6c34cb9012f5216c2ab7d21 /jinja2/idtracking.py | |
parent | d117425f5ed3f542100f20d3bf700ae7bc54039f (diff) | |
download | jinja2-2.9-maintenance.tar.gz |
Compile `elif` tag to `elif` instead of `else: if`2.9-maintenance
This avoids deep nesting in case of many `{% elif .. %}` blocks (which
would fail during execution) and also deep recursion (which may fail
during compilation)
fixes #759
Diffstat (limited to 'jinja2/idtracking.py')
-rw-r--r-- | jinja2/idtracking.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/jinja2/idtracking.py b/jinja2/idtracking.py index 8479b72..30e348d 100644 --- a/jinja2/idtracking.py +++ b/jinja2/idtracking.py @@ -222,9 +222,10 @@ class FrameSymbolVisitor(NodeVisitor): return rv body_symbols = inner_visit(node.body) + elif_symbols = inner_visit(node.elif_) else_symbols = inner_visit(node.else_ or ()) - self.symbols.branch_update([body_symbols, else_symbols]) + self.symbols.branch_update([body_symbols, elif_symbols, else_symbols]) def visit_Macro(self, node, **kwargs): self.symbols.store(node.name) |