mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
668b12e756
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`.
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#methodKernel#singleton_method
Module
Module#instance_method
Method class
Method#nameMethod#callMethod#super_methodMethod#arityMethod#unbindMethod#[]Method#ownerMethod#receiverMethod#parametersMethod#source_locationMethod#to_proc
UnboundMethod class
UnboundMethod#nameUnboundMethod#bindUnboundMethod#super_methodUnboundMethod#arityUnboundMethod#ownerUnboundMethod#parametersUnboundMethod#source_location