diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-31 02:58:45 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-31 02:58:45 +0000 |
commit | 6f017366adc1ad465057f9945c24d15c2c3a2106 (patch) | |
tree | fbad80368b16a3afdb7539f753d15babf7bf2233 /vm_method.c | |
parent | 6f9f8d2ef7d9c19e39194e6914e4cf39eaa5d473 (diff) | |
download | ruby-6f017366adc1ad465057f9945c24d15c2c3a2106.tar.gz |
vm_method.c: extract set_visibility
* vm_method.c (set_visibility): extract from rb_mod_public(),
rb_mod_protected() and rb_mod_private().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/vm_method.c b/vm_method.c index fe0df18af5..be2224fa63 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1290,6 +1290,19 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex) rb_clear_cache_by_class(self); } +static VALUE +set_visibility(int argc, VALUE *argv, VALUE module, int visi) +{ + secure_visibility(module); + if (argc == 0) { + SCOPE_SET(visi); + } + else { + set_method_visibility(module, argc, argv, visi); + } + return module; +} + /* * call-seq: * public -> self @@ -1305,14 +1318,7 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex) static VALUE rb_mod_public(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PUBLIC); - } - else { - set_method_visibility(module, argc, argv, NOEX_PUBLIC); - } - return module; + return set_visibility(argc, argv, module, NOEX_PUBLIC); } /* @@ -1330,14 +1336,7 @@ rb_mod_public(int argc, VALUE *argv, VALUE module) static VALUE rb_mod_protected(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PROTECTED); - } - else { - set_method_visibility(module, argc, argv, NOEX_PROTECTED); - } - return module; + return set_visibility(argc, argv, module, NOEX_PROTECTED); } /* @@ -1364,14 +1363,7 @@ rb_mod_protected(int argc, VALUE *argv, VALUE module) static VALUE rb_mod_private(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PRIVATE); - } - else { - set_method_visibility(module, argc, argv, NOEX_PRIVATE); - } - return module; + return set_visibility(argc, argv, module, NOEX_PRIVATE); } /* |