diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-11-04 11:20:04 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-11-04 11:20:04 +0900 |
| commit | 388d26d77027feaa3e107abf7209e2681868bbe6 (patch) | |
| tree | 938403632a0ebd14790c5f27df3dcdc19c6caee7 /test/t/array.rb | |
| parent | ab27abe0834bc9da38d4a4d895514a66ea53fe84 (diff) | |
| download | mruby-388d26d77027feaa3e107abf7209e2681868bbe6.tar.gz mruby-388d26d77027feaa3e107abf7209e2681868bbe6.zip | |
Reimplement `block_given?`; ref #3841
Make `block_given?` to search for the top of the scope first.
The top of the scope means either:
* the top method body
* the enclosing class body
* the top-level
The special case is the method defined by `define_method` with a
block as in #3841. In cases like this, the method body (given by
a block) is not considered as the top of the scope. You need to use
`&block` in the block parameter if you want to know if a block is
given to the method.
This commit also changes the behavior of `MRB_PROC_SCOPE` flag.
Now it is only set if the `proc` is either a class body or a method
body defined in Ruby. It is no longer set for a block that given to
`define_method`.
Diffstat (limited to 'test/t/array.rb')
0 files changed, 0 insertions, 0 deletions
