From: nobu.nakada@... Date: 2002-05-21T00:10:25+09:00 Subject: [ruby-dev:17159] Re: else without rescue なかだです。 At Mon, 20 May 2002 23:09:46 +0900, Nobuyoshi-Nakada wrote: > 1.7.2で、rescueなしのelseの代わりにensureが実行されます。 これに関連して、例外が発生しないときはelse節を実行してもbodyの 値を返す、つまりensureと同じような扱い(実行条件は当然違うけど) にするというのも思い付いたんですが、ちょっと互換性で影響が大き いかも。 Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.294 diff -u -2 -p -r1.294 eval.c --- eval.c 2002/05/16 05:53:14 1.294 +++ eval.c 2002/05/20 13:01:21 @@ -2589,5 +2589,5 @@ rb_eval(self, n) else if (node->nd_else) { /* else clause given */ if (!state) { /* no exception raised */ - result = rb_eval(self, node->nd_else); + rb_eval(self, node->nd_else); } } Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.170 diff -u -2 -p -r1.170 parse.y --- parse.y 2002/05/14 06:22:26 1.170 +++ parse.y 2002/05/20 15:05:13 @@ -305,10 +305,6 @@ bodystmt : compstmt { $$ = $1; - if ($2) { + if ($2 || $3) { $$ = NEW_RESCUE($1, $2, $3); - } - else if ($3) { - rb_warn("else without rescue is useless"); - $$ = block_append($$, $4); } if ($4) { -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦