<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -297,12 +297,12 @@ JSBool report_ruby_error_in_js(JohnsonRuntime* runtime, int state, VALUE old_err
     case TAG_RAISE:
       {
         VALUE local_error = ruby_errinfo;
-        jsval js_err;
         ruby_errinfo = old_errinfo;
-        if (!convert_to_js(runtime, local_error, &amp;js_err))
-          return JS_FALSE;
-        JS_SetPendingException(context, js_err);
-        return JS_FALSE;
+
+        local_error = rb_funcall(local_error, rb_intern(&quot;inspect&quot;), 0);
+        JS_ReportError(context, StringValuePtr(local_error));
+
+        return JS_FALSE ;
       }
 
     case TAG_THROW:</diff>
      <filename>ext/spidermonkey/conversions.c</filename>
    </modified>
    <modified>
      <diff>@@ -204,11 +204,25 @@ module Johnson
       end
 
       def test_raises_in_js
-        err = RuntimeError.new(&quot;an exception&quot;)
-        asplode = lambda { raise err }
-        assert_js_equal(err, &quot;x = null; try { foo(); } catch(ex) { x = ex; }; x&quot;, :foo =&gt; asplode)
+        @runtime[&quot;foo&quot;] = lambda { raise RuntimeError.new(&quot;an exception&quot;) }
+        raised = @runtime.evaluate &quot;x = null; try { foo(); } catch(ex) { x = ex; }; x&quot;
+        assert_equal &quot;#&lt;RuntimeError: an exception&gt;&quot;, raised.message
       end
-      
+
+      def test_uncaught_exceptions_have_decent_stack_trace
+        @runtime[&quot;foo&quot;] = lambda { raise RuntimeError.new(&quot;an exception&quot;) }
+        line_number = __LINE__ - 1 # reference to previous line
+        begin
+          @runtime.evaluate &quot;foo()&quot;
+        rescue Exception =&gt; e
+          assert_equal &quot;#&lt;RuntimeError: an exception&gt; at (none):1&quot;, e.message
+          assert_match %r/none:1\b/, e.backtrace[0]
+          assert_match %r/#{__FILE__}:#{line_number}\b/, e.backtrace[1]
+        else
+          flunk &quot;exception was not raised&quot;
+        end
+      end
+
       def test_array_multiple_assignment
         a = @runtime.evaluate(&quot;[1,2,3]&quot;)
         x, y, z = a</diff>
      <filename>test/johnson/spidermonkey/ruby_land_proxy_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>13bdf927cb158e13938e357b36088f49346c2ec0</id>
    </parent>
  </parents>
  <author>
    <name>Mike Dalessio</name>
    <email>mike@csa.net</email>
  </author>
  <url>http://github.com/jbarnette/johnson/commit/54ebdfc3bad9af226294b4007113c0d18305f2b3</url>
  <id>54ebdfc3bad9af226294b4007113c0d18305f2b3</id>
  <committed-date>2009-06-05T11:23:39-07:00</committed-date>
  <authored-date>2009-06-05T11:16:22-07:00</authored-date>
  <message>uncaught ruby exceptions now have a somewhat-mode-helpful stack trace which includes javascript stack.

Signed-off-by: Aaron Patterson &lt;aaron.patterson@gmail.com&gt;</message>
  <tree>511cd3c91f1eae3535fffc074657cd4f8c8d1d6a</tree>
  <committer>
    <name>Aaron Patterson</name>
    <email>aaron.patterson@gmail.com</email>
  </committer>
</commit>
