`IncludedTemplate` uses getattr rather then getitem now

--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 8282bc6..542beed 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -793,7 +793,7 @@
 
     def visit_ExprStmt(self, node, frame):
         self.newline(node)
-        self.visit(node, frame)
+        self.visit(node.node, frame)
 
     def visit_Output(self, node, frame):
         # if we have a known extends statement, we don't output anything
diff --git a/jinja2/environment.py b/jinja2/environment.py
index a982e8e..239193e 100644
--- a/jinja2/environment.py
+++ b/jinja2/environment.py
@@ -15,7 +15,7 @@
 from jinja2.compiler import generate
 from jinja2.runtime import Undefined, TemplateContext
 from jinja2.debug import translate_exception
-from jinja2.utils import import_string, LRUCache
+from jinja2.utils import import_string, LRUCache, Markup
 from jinja2.defaults import DEFAULT_FILTERS, DEFAULT_TESTS, DEFAULT_NAMESPACE
 
 
@@ -348,7 +348,12 @@
                                self.name, self.blocks)
 
     def include(self, context=None):
-        """Include this template."""
+        """Include this template.  When passed a template context or dict
+        the template is evaluated in that context and an `IncludedTemplate`
+        object is returned.  This object then exposes all the exported
+        variables as attributes and renders the contents of the template
+        when converted to unicode.
+        """
         if context is None:
             context = self.new_context({})
         elif isinstance(context, TemplateContext):
@@ -390,13 +395,16 @@
     """Represents an included template."""
 
     def __init__(self, template, context):
-        self._template = template
+        body = Markup(u''.join(template.root_render_func(context)))
+        self.__dict__.update(context.get_exported())
         self._name = template.name
-        self._rendered_body = u''.join(template.root_render_func(context))
-        self._context = context.get_exported()
+        self._rendered_body = body
 
-    __getitem__ = lambda x, n: x._context[n]
-    __html__ = __unicode__ = lambda x: x._rendered_body
+    __html__ = lambda x: x._rendered_body
+    __unicode__ = lambda x: unicode(x._rendered_body)
+
+    def __str__(self):
+        return unicode(self._rendered_body).encode('utf-8')
 
     def __repr__(self):
         return '<%s %r>' % (