From: Armin Ronacher Date: Thu, 11 Feb 2010 13:27:23 +0000 (+0100) Subject: This fixes #368. X-Git-Tag: 2.3.1~5 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=28decdbe96e2ffc5ef45177256b2cbeb05eb246c;p=jinja2.git This fixes #368. --HG-- branch : trunk --- diff --git a/jinja2/parser.py b/jinja2/parser.py index 96980d1..1f5e12a 100644 --- a/jinja2/parser.py +++ b/jinja2/parser.py @@ -54,21 +54,26 @@ class Parser(object): expected = [] for exprs in end_token_stack: expected.extend(map(describe_token_expr, exprs)) - currently_looking = ' or '.join("'%s'" % describe_token_expr(expr) - for expr in end_token_stack[-1]) + if end_token_stack: + currently_looking = ' or '.join( + "'%s'" % describe_token_expr(expr) + for expr in end_token_stack[-1]) + else: + currently_looking = None if name is None: message = ['Unexpected end of template.'] else: message = ['Encountered unknown tag \'%s\'.' % name] - if name is not None and name in expected: - message.append('You probably made a nesting mistake. Jinja ' - 'is expecting this tag, but currently looking ' - 'for %s.' % currently_looking) - else: - message.append('Jinja was looking for the following tags: ' - '%s.' % currently_looking) + if currently_looking: + if name is not None and name in expected: + message.append('You probably made a nesting mistake. Jinja ' + 'is expecting this tag, but currently looking ' + 'for %s.' % currently_looking) + else: + message.append('Jinja was looking for the following tags: ' + '%s.' % currently_looking) if self._tag_stack: message.append('The innermost block that needs to be ' diff --git a/jinja2/testsuite/lexnparse.py b/jinja2/testsuite/lexnparse.py index 93631ab..c56d510 100644 --- a/jinja2/testsuite/lexnparse.py +++ b/jinja2/testsuite/lexnparse.py @@ -188,6 +188,8 @@ and bar comment #} assert_error('{% block foo-bar-baz %}', "Block names in Jinja have to be valid Python identifiers " "and may not contain hypens, use an underscore instead.") + assert_error('{% unknown_tag %}', + "Encountered unknown tag 'unknown_tag'.") class SyntaxTestCase(JinjaTestCase):