diff options
author | Jeremy Evans <[email protected]> | 2019-08-28 16:41:39 -0700 |
---|---|---|
committer | Jeremy Evans <[email protected]> | 2019-12-03 23:18:28 +0200 |
commit | a029b54ec716812ade37fef1f857c49f821a8cc8 (patch) | |
tree | d754e3d18feed2eb2d6a8f620fdf996caf786c90 /test/ruby/test_enumerator.rb | |
parent | 47c97e1e843159c3c4d57f8c5e22daea57c3ffe1 (diff) |
Make Enumerator::Chain#each treat lambdas as lambda
Previously, lambdas were converted to procs because of how
rb_block_call works. Switch to rb_funcall_with_block, which
handles procs as procs and lambdas as lambdas.
Fixes [Bug #15613]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2720
Diffstat (limited to 'test/ruby/test_enumerator.rb')
-rw-r--r-- | test/ruby/test_enumerator.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_enumerator.rb b/test/ruby/test_enumerator.rb index 65adb5a438..75cf1aeec6 100644 --- a/test/ruby/test_enumerator.rb +++ b/test/ruby/test_enumerator.rb @@ -864,4 +864,20 @@ class TestEnumerator < Test::Unit::TestCase ], enum.to_a } end + + def test_chain_each_lambda + c = Class.new do + include Enumerable + attr_reader :is_lambda + def each(&block) + return to_enum unless block + @is_lambda = block.lambda? + end + end + e = c.new + e.chain.each{} + assert_equal(false, e.is_lambda) + e.chain.each(&->{}) + assert_equal(true, e.is_lambda) + end end |