Skip to content
  • dearblue's avatar
    668b12e7
    Check more `MRB_ARGS_NONE()` · 668b12e7
    dearblue authored
    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`.
    668b12e7
    Check more `MRB_ARGS_NONE()`
    dearblue authored
    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`.
Loading