diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-05-31 16:16:49 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-05-31 16:16:49 -0700 |
| commit | 0d15cfd5ec1e7d296d3fea67952b4039d5a2e54b (patch) | |
| tree | ad0e1ddbc8e91a2a8cba2f6c6505775d28394711 | |
| parent | 024f211f10ebb22024f430f7a794fc6ea14d3aec (diff) | |
| parent | 481d2874f1dd2448cc7eba6756667aaef42e4326 (diff) | |
| download | mruby-0d15cfd5ec1e7d296d3fea67952b4039d5a2e54b.tar.gz mruby-0d15cfd5ec1e7d296d3fea67952b4039d5a2e54b.zip | |
Merge pull request #211 from MobiRuby/add_kernel_send
add Kernel#send
| -rw-r--r-- | mrblib/kernel.rb | 9 | ||||
| -rw-r--r-- | src/kernel.c | 8 |
2 files changed, 9 insertions, 8 deletions
diff --git a/mrblib/kernel.rb b/mrblib/kernel.rb index af743e12a..de5196482 100644 --- a/mrblib/kernel.rb +++ b/mrblib/kernel.rb @@ -28,13 +28,14 @@ module Kernel # Alias for +send+. # # ISO 15.3.1.3.4 - def __send__(symbol, *args, &block) + #def __send__(symbol, *args, &block) ### *** TODO *** ### - end + #end # 15.3.1.3.18 def instance_eval(string=nil, &block) ### *** TODO *** ### + raise "Not implemented yet" end ## @@ -62,9 +63,9 @@ module Kernel # block. # # ISO 15.3.1.3.44 - def send(symbol, *args, &block) + #def send(symbol, *args, &block) ### *** TODO *** ### - end + #end ## # Print arguments diff --git a/src/kernel.c b/src/kernel.c index 17951afc7..9ee9e8d34 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -274,11 +274,11 @@ mrb_f_send(int argc, mrb_value *argv, mrb_value recv) static mrb_value mrb_f_send_m(mrb_state *mrb, mrb_value self) { - mrb_value *argv; + mrb_value name, block, *argv; int argc; - - mrb_get_args(mrb, "*", &argv, &argc); - return mrb_f_send(argc, argv, self); + + mrb_get_args(mrb, "&o*", &block, &name, &argv, &argc); + return mrb_funcall_with_block(mrb,self, mrb_string_value_ptr(mrb, name), argc, argv, block); } /* 15.3.1.2.1 */ |
