diff options
| author | dearblue <[email protected]> | 2021-11-24 23:34:31 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-11-26 12:18:41 +0900 |
| commit | 668b12e7566282f6c0165252e2b2f5432964020a (patch) | |
| tree | e8d2cd84b26ed6980f3c83b5ee7a2ef83225083b /include | |
| parent | b631c226eb3e59a813224183bbc9ddc2a01acd0e (diff) | |
| download | mruby-668b12e7566282f6c0165252e2b2f5432964020a.tar.gz mruby-668b12e7566282f6c0165252e2b2f5432964020a.zip | |
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`.
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/proc.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/mruby/proc.h b/include/mruby/proc.h index 31f40d379..1ba485783 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -83,6 +83,8 @@ struct RProc { } while (0) #define MRB_PROC_SCOPE 2048 #define MRB_PROC_SCOPE_P(p) (((p)->flags & MRB_PROC_SCOPE) != 0) +#define MRB_PROC_NOARG 4096 /* for MRB_PROC_CFUNC_FL, it would be something like MRB_ARGS_NONE() or MRB_METHOD_NOARG_FL */ +#define MRB_PROC_NOARG_P(p) (((p)->flags & MRB_PROC_NOARG) != 0) #define mrb_proc_ptr(v) ((struct RProc*)(mrb_ptr(v))) |
