なかだです。

不要なNODE_BEGINが残ることがあります。

$ ruby -rNodeDump -e 'begin ensure 0 end; 1'
NodeDump V0.9

NODE_BLOCK:
  NODE_BEGIN:
    NODE_NIL:
  NODE_LIT:  Fixnum: 1


Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.347 diff -U2 -p -d -r1.347 parse.y --- parse.y 27 Sep 2004 06:02:27 -0000 1.347 +++ parse.y 2 Oct 2004 07:48:59 -0000 @@ -652,5 +652,5 @@ { /*%%%*/ - $$ = newline_node($1); + $$ = newline_node(remove_begin($1)); /*% $$ = dispatch2(stmts_add, dispatch0(stmts_new), $1); @@ -660,5 +660,5 @@ { /*%%%*/ - $$ = block_append($1, newline_node($3)); + $$ = block_append($1, newline_node(remove_begin($3))); /*% $$ = dispatch2(stmts_add, $1, $3); @@ -667,5 +667,5 @@ | error stmt { - $$ = $2; + $$ = remove_begin($2); } ; @@ -3320,9 +3320,5 @@ { /*%%%*/ - if ($2) - $$ = $2; - else - /* place holder */ - $$ = NEW_NIL(); + $$ = $2; /*% $$ = dispatch1(ensure, $2);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦