Files
mruby-mruby/mrbgems/mruby-method
dearblue 668b12e756 Check more MRB_ARGS_NONE()
The `__id__` method implemented in the C function has `MRB_ARGS_NONE()` specified, but it is also effective in the following cases.

```ruby
p nil.__id__ opts: 1 rescue p :a
p nil.method(:__id__).call 1 rescue p :b
p nil.method(:__id__).call opts: 1 rescue p :c
p nil.method(:__id__).to_proc.call 1 rescue p :d
p nil.method(:__id__).to_proc.call opts: 1 rescue p :e
p nil.method(:__id__).unbind.bind_call nil, 1 rescue p :f
p nil.method(:__id__).unbind.bind_call nil, opts: 1 rescue p :g
p nil.__send__ :__id__, 1 rescue p :h
p nil.__send__ :__id__, opts: 1 rescue p :i
```

After applying this patch, all items will output symbols in the same way as CRuby.

For this purpose, add `MRB_PROC_NOARG` to `struct RProc::flags`.
2021-11-26 12:18:41 +09:00
..
2021-11-26 12:18:41 +09:00
2021-11-26 12:18:41 +09:00
2017-12-18 10:54:37 +09:00

mruby-method

An implementation of class Method and UnboundMethod for mruby

p Enumerable.instance_method(:find_all).source_location
#=> ["mruby/mruby/mrblib/enum.rb", 148]

Note

You need to enable debug option in your build configuration to use source_location method in this gem, for example:

MRuby::Build.new do |conf|
  conf.enable_debug
end

Supported Methods

Kernel

  • Kernel#method
  • Kernel#singleton_method

Module

  • Module#instance_method

Method class

  • Method#name
  • Method#call
  • Method#super_method
  • Method#arity
  • Method#unbind
  • Method#[]
  • Method#owner
  • Method#receiver
  • Method#parameters
  • Method#source_location
  • Method#to_proc

UnboundMethod class

  • UnboundMethod#name
  • UnboundMethod#bind
  • UnboundMethod#super_method
  • UnboundMethod#arity
  • UnboundMethod#owner
  • UnboundMethod#parameters
  • UnboundMethod#source_location

See also