/* * call-seq: * class.superclass -> a_super_class or nil * * Returns the superclass of <i>class</i>, or <code>nil</code>. * * File.superclass #=> IO * IO.superclass #=> Object * Object.superclass #=> nil * */ static VALUE rb_class_superclass(klass) VALUE klass; { VALUE super = RCLASS(klass)->super; if (!super) { rb_raise(rb_eTypeError, "uninitialized class"); } if (FL_TEST(klass, FL_SINGLETON)) { super = RBASIC(klass)->klass; } while (TYPE(super) == T_ICLASS) { super = RCLASS(super)->super; } if (!super) { return Qnil; } return super; }