Fixed a bug in the parser that made ``{{ foo[1, 2] }}`` impossible.
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 5 Feb 2009 22:13:15 +0000 (23:13 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 5 Feb 2009 22:13:15 +0000 (23:13 +0100)
--HG--
branch : trunk

CHANGES
jinja2/parser.py
tests/test_syntax.py

diff --git a/CHANGES b/CHANGES
index bf7853e074f1ca3496354fb4fb6a038e77c91122..edbdb0e26ad0ae2ea4a57fc36d8609dfc3ffb7c8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,7 @@ Version 2.2
   required parentheses (`not (foo in bar)`) which was odd.
 - Fixed a bug that caused syntax errors when defining macros or using the
   `{% call %}` tag inside loops.
+- Fixed a bug in the parser that made ``{{ foo[1, 2] }}`` impossible.
 
 Version 2.1.1
 -------------
index b6e23df2d0d5e373487d9e5175450e7d7189ccc8..d3eb8c4b8b0e70fbd85bd2041311dd8a47627525 100644 (file)
@@ -602,7 +602,7 @@ class Parser(object):
             if len(args) == 1:
                 arg = args[0]
             else:
-                arg = nodes.Tuple(args, self.lineno, self.filename)
+                arg = nodes.Tuple(args, 'load', lineno=token.lineno)
             return nodes.Getitem(node, arg, 'load', lineno=token.lineno)
         self.fail('expected subscript expression', self.lineno)
 
index 2a8e46fdb4f012ccf37177aa81bad33efd5da952..5e9e8048bee262e7811923313bc400e8ff07c56a 100644 (file)
@@ -195,3 +195,11 @@ def test_notin(env):
     bar = xrange(100)
     tmpl = env.from_string('''{{ not 42 in bar }}''')
     assert tmpl.render(bar=bar) == unicode(not 42 in bar)
+
+
+def test_implicit_subscribed_tuple(env):
+    class Foo(object):
+        def __getitem__(self, x):
+            return x
+    t = env.from_string('{{ foo[1, 2] }}')
+    assert t.render(foo=Foo()) == u'(1, 2)'