diff options
| author | Takashi Kokubun <[email protected]> | 2016-12-11 01:45:38 +0900 |
|---|---|---|
| committer | Takashi Kokubun <[email protected]> | 2016-12-11 03:44:15 +0900 |
| commit | 10bb7ad693e7c7443de924a39c1fedb4461108ba (patch) | |
| tree | 8ba3d7bd9992f0097f99a034012565adb43c4d4a /src/kernel.c | |
| parent | 3cc913490b708fe4d0e78e48f86e6e39cf3d8576 (diff) | |
| download | mruby-10bb7ad693e7c7443de924a39c1fedb4461108ba.tar.gz mruby-10bb7ad693e7c7443de924a39c1fedb4461108ba.zip | |
Implement Object#freeze
Diffstat (limited to 'src/kernel.c')
| -rw-r--r-- | src/kernel.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/kernel.c b/src/kernel.c index c63e05596..78e57a17a 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -450,6 +450,15 @@ mrb_obj_extend_m(mrb_state *mrb, mrb_value self) return mrb_obj_extend(mrb, argc, argv, self); } +static mrb_value +mrb_obj_freeze(mrb_state *mrb, mrb_value self) +{ + struct RBasic *b = mrb_basic_ptr(self); + + RBASIC_SET_FROZEN_FLAG(b); + return self; +} + /* 15.3.1.3.15 */ /* * call-seq: @@ -1124,6 +1133,7 @@ mrb_init_kernel(mrb_state *mrb) mrb_define_method(mrb, krn, "eql?", mrb_obj_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.10 */ mrb_define_method(mrb, krn, "equal?", mrb_obj_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.11 */ mrb_define_method(mrb, krn, "extend", mrb_obj_extend_m, MRB_ARGS_ANY()); /* 15.3.1.3.13 */ + mrb_define_method(mrb, krn, "freeze", mrb_obj_freeze, MRB_ARGS_NONE()); mrb_define_method(mrb, krn, "global_variables", mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.3.14 */ mrb_define_method(mrb, krn, "hash", mrb_obj_hash, MRB_ARGS_NONE()); /* 15.3.1.3.15 */ mrb_define_method(mrb, krn, "initialize_copy", mrb_obj_init_copy, MRB_ARGS_REQ(1)); /* 15.3.1.3.16 */ |
