tfpt review /shelveset:Procs5;REDMOND\tomat
Refactors Ruby blocks and procs:
-
The compiled block has now signature (BlockParam, self,
formal-args) - self argument was added. Previously it was passed thru
BlockParam.Proc in a very hacky way.
-
Removed hacks from dynamic actions on blocks and methods created
by define_method. Improved rules generated for these actions.
-
RubyBlockInfo no longer inherits from RubyMemberInfo. There is
no reason to do so, blocks are not directly stored in method tables and
cannot be invoked via InvokeMemberAction.
Adds YieldAction - a custom Ruby action for yielding to a block that
allows to pass BlockParam and self.
Implements module_eval/class_eval - both Proc and string versions.
Implements eval that takes Proc as a binding.
Adds module_eval and proc related unit tests.
Tomas