Improve Class#superclass to ISO

This commit is contained in:
Daniel Bovensiepen
2012-06-03 23:29:40 +08:00
parent 7009a1d8f5
commit 5612d195ec
2 changed files with 16 additions and 6 deletions
+9 -3
View File
@@ -822,10 +822,16 @@ mrb_class_new_class(mrb_state *mrb, mrb_value cv)
mrb_value
mrb_class_superclass(mrb_state *mrb, mrb_value klass)
{
struct RClass *c, *s;
struct RClass *c;
mrb_value superclass;
c = mrb_class_ptr(klass);
s = mrb_class_real(c->super);
return mrb_obj_value(s);
if (c->super)
superclass = mrb_obj_value(mrb_class_real(c->super));
else
superclass = mrb_nil_value();
return superclass;
}
static mrb_value
+7 -3
View File
@@ -5,9 +5,8 @@ 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
assert('Class superclass', '15.2.3.2') do
Class.superclass == Module
end
assert('Class#new', '15.2.3.3.3') do
@@ -40,6 +39,11 @@ assert('Class#new', '15.2.3.3.3') do
# with block doesn't work yet
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