Ruby Forum Ruby-dev > patch for defined?(C && 0) / defined?(super())

Posted by wanabe (Guest)
on 05.05.2008 09:43
(Received via mailing list)
$B%o%J%Y$H?=$7$^$9!#(B

defined? C && 0 $B$d(B defined?(super()) $B$,(B
BUG $B$GMn$A$J$$$h$&$K$9$k%Q%C%A$r=q$-$^$7$?!#(B

$B$^$?!"(Bdefined?(super()) $B$N%3%s%Q%$%k7k2L$r8+$F$_$k$H(B
NODE_SUPER $B$,(B "expression" $B$rJV$7$F$$$k$h$&$@$C$?$N$G(B
"super" $B$rJV$9$h$&$K$7$^$7$?!#;EMM$G$7$?$i?=$7Lu$"$j$^$;$s!#(B

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 */
     }