mrb_const_defined returns true if it is defined on a super class.

This commit is contained in:
Tomoyuki Sahara
2014-09-19 13:22:56 +09:00
parent 37105ef13b
commit f7a0946452
2 changed files with 9 additions and 9 deletions
+5 -5
View File
@@ -60,14 +60,14 @@ mrb_sce_init(mrb_state *mrb, mrb_value self)
static mrb_value
mrb_sce_errno(mrb_state *mrb, mrb_value self)
{
struct RClass *c;
mrb_sym sym;
mrb_value klass;
klass = mrb_obj_value(mrb_class(mrb, self));
c = mrb_class(mrb, self);
sym = mrb_intern_lit(mrb, "Errno");
if (mrb_const_defined(mrb, klass, sym))
return mrb_const_get(mrb, klass, sym);
else {
if (mrb_const_defined_at(mrb, c, sym)) {
return mrb_const_get(mrb, mrb_obj_value(c), sym);
} else {
sym = mrb_intern_lit(mrb, "errno");
return mrb_attr_get(mrb, self, sym);
}
+4 -4
View File
@@ -17,10 +17,10 @@ assert('SystemCallError#initialize') do
end
assert('SystemCallError#errno') do
SystemCallError.new("a", 1).errno == 1 and
SystemCallError.new(1).errno == 1 and
SystemCallError.new("a", 12345).errno == 12345 and
SystemCallError.new(23456).errno == 23456
assert_equal 1, SystemCallError.new("a", 1).errno
assert_equal 1, SystemCallError.new(1).errno
assert_equal 12345, SystemCallError.new("a", 12345).errno
assert_equal 23456, SystemCallError.new(23456).errno
end
assert('SystemCallError#inspect') do