summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-kernel-ext
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-05-25 20:08:09 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-09-04 16:17:06 +0900
commit8a9f891fd3440e89b5ad7287769db8a9ffae9df5 (patch)
tree11479ce9402d140d142ac5c1aa5470d04c4dd132 /mrbgems/mruby-kernel-ext
parent2d8f4fa92fe14d5ec012533ade65eb013a8fc73a (diff)
downloadmruby-8a9f891fd3440e89b5ad7287769db8a9ffae9df5.tar.gz
mruby-8a9f891fd3440e89b5ad7287769db8a9ffae9df5.zip
Rename `Kernel#__method__` to `Kernel#__callee__`
Because the current behavior of `__method__` is equivalent to `__callee__`. Example: # example.rb def src __send__(ARGV[0]) end alias dst src %w[src dst].each {|n| puts "call #{n} => #{__send__(n).inspect}"} Ruby: $ ruby example.rb __method__ call src => :src call dst => :src $ ruby example.rb __callee__ call src => :src call dst => :dst mruby: $ mruby example.rb __method__ call src => :src call dst => :dst
Diffstat (limited to 'mrbgems/mruby-kernel-ext')
-rw-r--r--mrbgems/mruby-kernel-ext/src/kernel.c9
-rw-r--r--mrbgems/mruby-kernel-ext/test/kernel.rb17
2 files changed, 17 insertions, 9 deletions
diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c
index 2d93e4fef..152ce0e8d 100644
--- a/mrbgems/mruby-kernel-ext/src/kernel.c
+++ b/mrbgems/mruby-kernel-ext/src/kernel.c
@@ -66,15 +66,14 @@ mrb_f_caller(mrb_state *mrb, mrb_value self)
/*
* call-seq:
- * __method__ -> symbol
+ * __callee__ -> symbol
*
- * Returns the name at the definition of the current method as a
- * Symbol.
+ * Returns the called name of the current method as a Symbol.
* If called outside of a method, it returns <code>nil</code>.
*
*/
static mrb_value
-mrb_f_method(mrb_state *mrb, mrb_value self)
+mrb_f_callee(mrb_state *mrb, mrb_value self)
{
mrb_callinfo *ci = mrb->c->ci;
ci--;
@@ -247,7 +246,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb)
mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_OPT(2));
mrb_define_module_function(mrb, krn, "caller", mrb_f_caller, MRB_ARGS_OPT(2));
- mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE());
+ mrb_define_method(mrb, krn, "__callee__", mrb_f_callee, MRB_ARGS_NONE());
mrb_define_module_function(mrb, krn, "Integer", mrb_f_integer, MRB_ARGS_ARG(1,1));
#ifndef MRB_NO_FLOAT
mrb_define_module_function(mrb, krn, "Float", mrb_f_float, MRB_ARGS_REQ(1));
diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb
index fc4402b3d..1f682c42e 100644
--- a/mrbgems/mruby-kernel-ext/test/kernel.rb
+++ b/mrbgems/mruby-kernel-ext/test/kernel.rb
@@ -37,13 +37,22 @@ assert('Kernel.caller, Kernel#caller') do
assert_raise(TypeError) { c.new.baz(nil) }
end
-assert('Kernel#__method__') do
- assert_equal(:m, Class.new {def m; __method__; end}.new.m)
- assert_equal(:m, Class.new {define_method(:m) {__method__}}.new.m)
+assert('Kernel#__callee__') do
+ c = Class.new do
+ def m1; __callee__ end
+ define_method(:m2) {__callee__}
+ alias m3 m1
+ alias_method :m4, :m2
+ end
+ assert_equal(:m1, c.new.m1)
+ assert_equal(:m2, c.new.m2)
+ assert_equal(:m3, c.new.m3)
+ assert_equal(:m4, c.new.m4)
+
c = Class.new do
[:m1, :m2].each do |m|
define_method(m) do
- __method__
+ __callee__
end
end
end