summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-31 02:58:45 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-31 02:58:45 +0000
commit6f017366adc1ad465057f9945c24d15c2c3a2106 (patch)
treefbad80368b16a3afdb7539f753d15babf7bf2233 /vm_method.c
parent6f9f8d2ef7d9c19e39194e6914e4cf39eaa5d473 (diff)
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.c40
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);
}
/*