rb_undef_method()を使用して未定義にされたメソッド名は、
Rubyスクリプトから同じ名前で定義したとき、
メソッドの中からsuperが呼び出せないというのは、
仕様でしょうか?

class Module
  def append_features; end
  def foo; end
end

class Class
  def append_features  # object.cでrb_undef_method()されている
    defined? super
  end
  def foo
    defined? super
  end
end

c = Class.new
p c.foo              # => "super"
p c.append_features  # => nil


以下は、バグと仮定した場合のパッチです。

--- class.c.orig	Wed Feb 14 14:51:57 2001
+++ class.c	Thu Mar 15 19:18:41 2001
@@ -497,7 +497,7 @@
     VALUE klass;
     const char *name;
 {
-    rb_add_method(klass, rb_intern(name), 0, NOEX_UNDEF);
+    rb_add_method(klass, rb_intern(name), 0, NOEX_PUBLIC);
 }
 
 #define SPECIAL_SINGLETON(x,c) if (obj == (x)) {\


----
小迫@ソフネック   渋谷区恵比寿1-15-1