<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -146,7 +146,12 @@ namespace rubinius {
     ++level;
     for(size_t i = 0; i &lt; stop; i++) {
       indent(level);
-      ary-&gt;get(state, i)-&gt;show(state, level);
+      OBJECT obj = ary-&gt;get(state, i);
+      if(obj == ary) {
+        class_info(obj, true);
+      } else {
+        obj-&gt;show(state, level);
+      }
     }
     if(ary-&gt;size() &gt; stop) {
       indent(level);</diff>
      <filename>vm/builtin/array.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,7 @@ namespace rubinius {
     class Info : public TypeInfo {
     public:
       BASIC_TYPEINFO(TypeInfo)
-      void show(STATE, OBJECT self, int level);
+      virtual void show(STATE, OBJECT self, int level);
     };
   };
 };</diff>
      <filename>vm/builtin/array.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@
 #include &quot;builtin/fixnum.hpp&quot;
 
 #include &lt;cstdarg&gt;
+#include &lt;iostream&gt;
 
 namespace rubinius {
   OBJECT Tuple::at(size_t index) {
@@ -127,4 +128,27 @@ namespace rubinius {
     }
   }
 
+  void Tuple::Info::show(STATE, OBJECT self, int level) {
+    Tuple* tup = as&lt;Tuple&gt;(self);
+    size_t size = tup-&gt;field_count;
+    size_t stop = size &lt; 5 ? size : 5;
+
+    class_info(self);
+    std::cout &lt;&lt; &quot;: &quot; &lt;&lt; size &lt;&lt; &quot;\n&quot;;
+    ++level;
+    for(size_t i = 0; i &lt; stop; i++) {
+      indent(level);
+      OBJECT obj = tup-&gt;at(i);
+      if(obj == tup) {
+        class_info(self, true);
+      } else {
+        obj-&gt;show(state, level);
+      }
+    }
+    if(tup-&gt;field_count &gt; stop) {
+      indent(level);
+      std::cout &lt;&lt; &quot;...\n&quot;;
+    }
+    indent(--level); std::cout &lt;&lt; &quot;&gt;\n&quot;;
+  }
 }</diff>
      <filename>vm/builtin/tuple.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -44,6 +44,7 @@ namespace rubinius {
     public:
       Info(object_type type) : TypeInfo(type) { }
       virtual void mark(OBJECT t, ObjectMark&amp; mark);
+      virtual void show(STATE, OBJECT self, int level);
     };
   };
 };</diff>
      <filename>vm/builtin/tuple.hpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b78e807dbc432e81503603c25cb0180d82f57f1d</id>
    </parent>
  </parents>
  <author>
    <name>Brian Ford</name>
    <email>bford@engineyard.com</email>
  </author>
  <url>http://github.com/evanphx/rubinius/commit/7f8af1531125850bc75b8315269a7e0528e98c50</url>
  <id>7f8af1531125850bc75b8315269a7e0528e98c50</id>
  <committed-date>2008-09-03T12:56:59-07:00</committed-date>
  <authored-date>2008-09-03T12:56:59-07:00</authored-date>
  <message>Added show for Tuple and recursion guard for Array.</message>
  <tree>7a6a5ad26178f8f9b5eb590f0908ee17b688602c</tree>
  <committer>
    <name>Brian Ford</name>
    <email>bford@engineyard.com</email>
  </committer>
</commit>
