implemented includes
--HG--
branch : trunk
diff --git a/jinja2/parser.py b/jinja2/parser.py
index 8dc5d58..f1195c4 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -161,12 +161,12 @@
expr = self.parse_expression()
if self.stream.current.type is 'assign':
self.stream.next()
- if not expr.can_assign():
+ node.target = self.stream.expect('name')
+ # make sure that assignments to that name are allowed
+ if not nodes.Name(node.target, 'store').can_assign():
raise TemplateSyntaxError('can\'t assign imported template '
- 'to this expression.', expr.lineno,
+ 'to %r' % node.target, expr.lineno,
self.filename)
- expr.set_ctx('store')
- node.target = expr
node.template = self.parse_expression()
else:
node.target = None
@@ -186,6 +186,11 @@
def parse_macro(self):
node = nodes.Macro(lineno=self.stream.expect('macro').lineno)
node.name = self.stream.expect('name').value
+ # make sure that assignments to that name are allowed
+ if not nodes.Name(node.name, 'store').can_assign():
+ raise TemplateSyntaxError('can\'t assign macro to %r' %
+ node.target, node.lineno,
+ self.filename)
self.stream.expect('lparen')
node.args = args = []
node.defaults = defaults = []