aboutsummaryrefslogtreecommitdiffstats
path: root/vm_method.c
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2020-12-18 14:12:42 +0900
committerYusuke Endoh <mame@ruby-lang.org>2020-12-18 16:08:55 +0900
commit982443e6e373f5a3ac22ee495909cb9adffcd08d (patch)
tree111f10669bb784da3fec5721749aef055c2cb119 /vm_method.c
parent41c208d4a463183fddca250026e5f1cd759d2604 (diff)
downloadruby-982443e6e373f5a3ac22ee495909cb9adffcd08d.tar.gz
Revert "Better cooperation between public/protected/private with attr* and alias_method"
This reverts commit 81739ad4fdfcc86a769056fec352f27c686fba1b.
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c40
1 files changed, 10 insertions, 30 deletions
diff --git a/vm_method.c b/vm_method.c
index e2c5bfb064..e526ee0130 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -1941,13 +1941,13 @@ rb_alias(VALUE klass, ID alias_name, ID original_name)
/*
* call-seq:
- * alias_method(new_name, old_name) -> symbol
+ * alias_method(new_name, old_name) -> self
*
* Makes <i>new_name</i> a new copy of the method <i>old_name</i>. This can
* be used to retain access to methods that are overridden.
*
* module Mod
- * alias_method :orig_exit, :exit #=> :orig_exit
+ * alias_method :orig_exit, :exit
* def exit(code=0)
* puts "Exiting with code #{code}"
* orig_exit(code)
@@ -1968,19 +1968,8 @@ rb_mod_alias_method(VALUE mod, VALUE newname, VALUE oldname)
if (!oldid) {
rb_print_undef_str(mod, oldname);
}
- VALUE id = rb_to_id(newname);
- rb_alias(mod, id, oldid);
- return ID2SYM(id);
-}
-
-static void
-check_and_export_method(VALUE self, VALUE name, rb_method_visibility_t visi)
-{
- ID id = rb_check_id(&name);
- if (!id) {
- rb_print_undef_str(self, name);
- }
- rb_export_method(self, id, visi);
+ rb_alias(mod, rb_to_id(newname), oldid);
+ return mod;
}
static void
@@ -1995,19 +1984,13 @@ set_method_visibility(VALUE self, int argc, const VALUE *argv, rb_method_visibil
return;
}
-
- VALUE v;
-
- if (argc == 1 && (v = rb_check_array_type(argv[0])) != Qnil) {
- long j;
-
- for (j = 0; j < RARRAY_LEN(v); j++) {
- check_and_export_method(self, RARRAY_AREF(v, j), visi);
+ for (i = 0; i < argc; i++) {
+ VALUE v = argv[i];
+ ID id = rb_check_id(&v);
+ if (!id) {
+ rb_print_undef_str(self, v);
}
- } else {
- for (i = 0; i < argc; i++) {
- check_and_export_method(self, argv[i], visi);
- }
+ rb_export_method(self, id, visi);
}
}
@@ -2029,7 +2012,6 @@ set_visibility(int argc, const VALUE *argv, VALUE module, rb_method_visibility_t
* public -> self
* public(symbol, ...) -> self
* public(string, ...) -> self
- * public(array) -> self
*
* With no arguments, sets the default visibility for subsequently
* defined methods to public. With arguments, sets the named methods to
@@ -2048,7 +2030,6 @@ rb_mod_public(int argc, VALUE *argv, VALUE module)
* protected -> self
* protected(symbol, ...) -> self
* protected(string, ...) -> self
- * protected(array) -> self
*
* With no arguments, sets the default visibility for subsequently
* defined methods to protected. With arguments, sets the named methods
@@ -2076,7 +2057,6 @@ rb_mod_protected(int argc, VALUE *argv, VALUE module)
* private -> self
* private(symbol, ...) -> self
* private(string, ...) -> self
- * private(array) -> self
*
* With no arguments, sets the default visibility for subsequently
* defined methods to private. With arguments, sets the named methods