mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mrb_const_defined returns true if it is defined on a super class.
This commit is contained in:
+5
-5
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user