Commit df80b783 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

Add Class#superclass; a patch made by @bovi; close #234

parent 12d75223
......@@ -819,6 +819,15 @@ mrb_class_new_class(mrb_state *mrb, mrb_value cv)
return mrb_obj_value(new_class);
}
mrb_value
mrb_class_superclass(mrb_state *mrb, mrb_value klass)
{
struct RClass *c, *s;
c = mrb_class_ptr(klass);
s = c->super;
return mrb_obj_value(s);
}
static mrb_value
mrb_bob_init(mrb_state *mrb, mrb_value cv)
{
......@@ -1240,6 +1249,7 @@ mrb_init_class(mrb_state *mrb)
mrb_define_method(mrb, bob, "!", mrb_bob_not, ARGS_NONE());
mrb_define_method(mrb, bob, "method_missing", mrb_bob_missing, ARGS_ANY()); /* 15.3.1.3.30 */
mrb_define_class_method(mrb, cls, "new", mrb_class_new_class, ARGS_ANY());
mrb_define_method(mrb, cls, "superclass", mrb_class_superclass, ARGS_NONE());
mrb_define_method(mrb, cls, "new", mrb_instance_new, ARGS_ANY());
mrb_define_method(mrb, cls, "inherited", mrb_bob_init, ARGS_REQ(1));
mrb_define_method(mrb, mod, "include", mrb_mod_include, ARGS_REQ(1));
......
......@@ -5,6 +5,11 @@ assert('Class', '15.2.3') do
Class.class == Class
end
assert('Class#superclass', '15.2.3.3.4') do
class SubClass < String; end
SubClass.superclass == String
end
# Not ISO specified
assert('Class 1') do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment