Fixed a bug in the subscript operation.

--HG--
branch : trunk
diff --git a/CHANGES b/CHANGES
index c1eb733..eb730f1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -14,6 +14,10 @@
 
 - fixed a limitation in the lexer that made ``{{ foo.0.0 }}`` impossible.
 
+- index based subscribing of variables with a constant value returns an
+  undefined object now instead of raising an index error.  This was a bug
+  caused by eager optimizing.
+
 Version 2.0
 -----------
 (codename jinjavitus, released on July 17th 2008)
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 4c0944a..6bd9428 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -1299,11 +1299,8 @@
         self.write(', %r)' % node.attr)
 
     def visit_Getitem(self, node, frame):
-        # slices or integer subscriptions bypass the getitem
-        # method if we can determine that at compile time.
-        if isinstance(node.arg, nodes.Slice) or \
-           (isinstance(node.arg, nodes.Const) and
-            isinstance(node.arg.value, (int, long))):
+        # slices bypass the environment getitem method.
+        if isinstance(node.arg, nodes.Slice):
             self.visit(node.node, frame)
             self.write('[')
             self.visit(node.arg, frame)
diff --git a/tests/test_undefined.py b/tests/test_undefined.py
index f0544bb..eb1e7e6 100644
--- a/tests/test_undefined.py
+++ b/tests/test_undefined.py
@@ -6,6 +6,9 @@
     :copyright: 2008 by Armin Ronacher.
     :license: BSD, see LICENSE for more details.
 """
+from py.test import raises
+from jinja2 import Template
+from jinja2.exceptions import UndefinedError
 
 
 test_default_undefined = '''
@@ -72,3 +75,8 @@
   ...
 UndefinedError: 'missing' is undefined
 '''
+
+
+def test_indexing_gives_undefined():
+    t = Template("{{ var[42].foo }}")
+    raises(UndefinedError, t.render, var=0)