more unittests and updated documentation for extensions. Fixed bug in optimizer that caused blocks to be optimized away under some circumstances.
--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 3b5f8c0..6dcaf08 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -678,11 +678,11 @@
self.indent()
if have_extends:
self.writeline('parent_template = None')
- self.pull_locals(frame)
- self.pull_dependencies(node.body)
if 'self' in find_undeclared(node.body, ('self',)):
frame.identifiers.add_special('self')
self.writeline('l_self = TemplateReference(context)')
+ self.pull_locals(frame)
+ self.pull_dependencies(node.body)
self.blockvisit(node.body, frame)
self.outdent()
@@ -1364,7 +1364,7 @@
self.write('environment.' + node.name)
def visit_ExtensionAttribute(self, node, frame):
- self.write('environment.extensions[%r].%s' % (node.identifier, node.attr))
+ self.write('environment.extensions[%r].%s' % (node.identifier, node.name))
def visit_ImportedName(self, node, frame):
self.write(self.import_aliases[node.importname])
@@ -1372,6 +1372,9 @@
def visit_InternalName(self, node, frame):
self.write(node.name)
+ def visit_ContextReference(self, node, frame):
+ self.write('context')
+
def visit_Continue(self, node, frame):
self.writeline('continue', node)