diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | test/ruby/test_lazy_enumerator.rb | 7 | ||||
-rw-r--r-- | vm.c | 4 |
3 files changed, 16 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Wed Dec 16 19:30:56 2015 Shugo Maeda <shugo@ruby-lang.org> + + * vm.c (vm_make_proc_from_block): should convert a Symbol to a Proc. + [ruby-core:72083] [Bug #11811] + Wed Dec 16 16:17:34 2015 Eric Wong <e@80x24.org> * test/ruby/test_io.rb: fix spelling errors diff --git a/test/ruby/test_lazy_enumerator.rb b/test/ruby/test_lazy_enumerator.rb index 29c6b3e855..5feddd5bde 100644 --- a/test/ruby/test_lazy_enumerator.rb +++ b/test/ruby/test_lazy_enumerator.rb @@ -532,4 +532,11 @@ EOS assert_warning("") {le.drop(1).force} assert_warning("") {le.drop_while{false}.force} end + + def test_symbol_chain + assert_equal(["1", "3"], [1, 2, 3].lazy.reject(&:even?).map(&:to_s).force) + assert_raise(NoMethodError) do + [1, 2, 3].lazy.map(&:undefined).map(&:to_s).force + end + end end @@ -567,6 +567,10 @@ vm_make_proc_from_block(rb_thread_t *th, rb_block_t *block, VALUE *procptr) *procptr = block->proc = rb_vm_make_proc(th, block, rb_cProc); return TRUE; } + else if (SYMBOL_P(block->proc)) { + *procptr = rb_sym_to_proc(block->proc); + return TRUE; + } else { *procptr = block->proc; return FALSE; |