diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-25 02:57:30 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-25 02:57:30 +0000 |
commit | 19a1f70364ccabaace321d492d35a99ad9053423 (patch) | |
tree | bf5e442ff846de6e5d40a4289632dd6673c08a2c /class.c | |
parent | 0d0eefd9c66862cbf6865a6e33bc8dc66273488f (diff) |
class.c: ensure_includable
* class.c (ensure_includable): extract checks to include and
prepend.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -849,14 +849,20 @@ rb_include_class_new(VALUE module, VALUE super) static int include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super); +static void +ensure_includable(VALUE klass, VALUE module) +{ + rb_frozen_class_p(klass); + Check_Type(module, T_MODULE); + OBJ_INFECT(klass, module); +} + void rb_include_module(VALUE klass, VALUE module) { int changed = 0; - rb_frozen_class_p(klass); - Check_Type(module, T_MODULE); - OBJ_INFECT(klass, module); + ensure_includable(klass, module); changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module, TRUE); if (changed < 0) @@ -966,9 +972,7 @@ rb_prepend_module(VALUE klass, VALUE module) VALUE origin; int changed = 0; - rb_frozen_class_p(klass); - Check_Type(module, T_MODULE); - OBJ_INFECT(klass, module); + ensure_includable(klass, module); origin = RCLASS_ORIGIN(klass); if (origin == klass) { |