On Sat, May 18, 2002 at 05:57:46AM +0900, Michael Campbell wrote:
> This seems correct to me; you're not calling <=> in the second code
> snippet.

I disagree.  In the second code snippet, I call Foo#==, which is not
defined in Foo, but is defined in Comparable (which is in compar.c) to
be:

  static VALUE
  cmp_equal(x, y)
      VALUE x, y;
  {
      VALUE a[2];

      if (x == y) return Qtrue;

      a[0] = x; a[1] = y;
      return rb_rescue(cmp_eq, (VALUE)a, cmp_failed, 0);
  }

The feature in question is the rb_rescue at the end of the function.

Paul