From: wanabe Date: 2008-05-05T16:42:25+09:00 Subject: [ruby-dev:34593] patch for defined?(C && 0) / defined?(super()) ワナベと申します。 defined? C && 0 や defined?(super()) が BUG で落ちないようにするパッチを書きました。 また、defined?(super()) のコンパイル結果を見てみると NODE_SUPER が "expression" を返しているようだったので "super" を返すようにしました。仕様でしたら申し訳ありません。 Index: compile.c =================================================================== --- compile.c (revision 16278) +++ compile.c (working copy) @@ -2461,6 +2461,7 @@ needstr); return 1; + case NODE_SUPER: case NODE_ZSUPER: ADD_INSN(ret, nd_line(node), putnil); ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_ZSUPER), 0, @@ -2504,7 +2505,7 @@ } ADD_LABEL(ret, lend); - ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, lstart, lend, ensure, lfinish[1]); + ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, ensure, lfinish[1]); return 1; } /* end of default */ } -- ワナベ