mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
+16
-2
@@ -453,9 +453,23 @@ mrb_obj_extend_m(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
mrb_obj_freeze(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
struct RBasic *b = mrb_basic_ptr(self);
|
||||
struct RBasic *b;
|
||||
|
||||
MRB_SET_FROZEN_FLAG(b);
|
||||
switch (mrb_type(self)) {
|
||||
case MRB_TT_FALSE:
|
||||
case MRB_TT_TRUE:
|
||||
case MRB_TT_FIXNUM:
|
||||
case MRB_TT_SYMBOL:
|
||||
case MRB_TT_FLOAT:
|
||||
return self;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
b = mrb_basic_ptr(self);
|
||||
if (!MRB_FROZEN_P(b)) {
|
||||
MRB_SET_FROZEN_FLAG(b);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -260,6 +260,8 @@ end
|
||||
assert('Kernel#freeze') do
|
||||
obj = Object.new
|
||||
assert_equal obj, obj.freeze
|
||||
assert_equal 0, 0.freeze
|
||||
assert_equal :a, :a.freeze
|
||||
end
|
||||
|
||||
assert('Kernel#global_variables', '15.3.1.3.14') do
|
||||
@@ -620,4 +622,3 @@ assert('stack extend') do
|
||||
|
||||
assert_equal 6, recurse(0, 5)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user