なかだです。

http://mput.dip.jp/mput/?date=20040620#p01
mputさんが納得いかんそうなのでちょっと調べてみましたが、breakや
returnによるLocalJumpErrorはすべてproc_jump_error()で処理されて
しまい、error_handle()や jump_tag_but_local_jump()には到達しな
いように見えます。proc_jump_error()が必要なのは、rb_call0()や
rb_yield_0()、block_pass()などで捕捉したときだけなんじゃないで
しょうか。


Index: eval.c =================================================================== RCS file: /pub/cvs/ruby/src/ruby/eval.c,v retrieving revision 1.672 diff -u -2 -p -r1.672 eval.c --- eval.c 19 Jun 2004 04:27:07 -0000 1.672 +++ eval.c 21 Jun 2004 12:44:06 -0000 @@ -4537,5 +4537,5 @@ return_jump(retval) tt = tt->prev; } - proc_jump_error(TAG_RETURN, retval); + localjump_error("unexpected return", retval, TAG_RETURN); } @@ -4562,5 +4562,5 @@ break_jump(retval) tt = tt->prev; } - proc_jump_error(TAG_BREAK, retval); + localjump_error("unexpected break", retval, TAG_BREAK); }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦