From 19a1f70364ccabaace321d492d35a99ad9053423 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 25 Mar 2017 02:57:30 +0000 Subject: [PATCH] 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 --- class.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/class.c b/class.c index 5c54b0c7d4..fc99ce4513 100644 --- a/class.c +++ b/class.c @@ -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) {