improved undefined behavior

--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 596091e..955403d 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -938,7 +938,7 @@
     def uaop(operator):
         def visitor(self, node, frame):
             self.write('(' + operator)
-            self.visit(node.node)
+            self.visit(node.node, frame)
             self.write(')')
         return visitor
 
@@ -977,11 +977,6 @@
             have_const = True
         except nodes.Impossible:
             have_const = False
-        if have_const:
-            if isinstance(const, (int, long, float)):
-                self.visit(node.node, frame)
-                self.write('[%s]' % const)
-                return
         self.write('environment.subscribe(')
         self.visit(node.node, frame)
         self.write(', ')