path: root/ext/-test-/iter/yield.c
AgeCommit message (Collapse)Author
2019-09-26Fix more keyword separation issuesJeremy Evans
This fixes instance_exec and similar methods. It also fixes Enumerator::Yielder#yield, rb_yield_block, and a couple of cases with Proc#{<<,>>}. This support requires the addition of rb_yield_values_kw, similar to rb_yield_values2, for passing the keyword flag. Unlike earlier attempts at this, this does not modify the rb_block_call_func type or add a separate function type. The functions of type rb_block_call_func are called by Ruby with a separate VM frame, and we can get the keyword flag information from the VM frame flags, so it doesn't need to be passed as a function argument. These changes require the following VM functions accept a keyword flag: * vm_yield_with_cref * vm_yield * vm_yield_with_block Notes: Merged:
2013-11-30vm_eval.c: blockargnobu
* vm_eval.c (rb_yield_block): implement non-nil block argument. git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e