Bug #2402: super in instance_eval
http://redmine.ruby-lang.org/issues/show/2402

起票者: Shugo Maeda
ステータス: Open, 優先度: Normal
ruby -v: ruby 1.9.2dev (2009-11-24 trunk 25909) [i686-linux]

instance_evalのブロック内でsuperを呼ぶと、instance_evalで変更された
selfに対してsuperの呼び出しを行ってしまうようです。

defiant:build$ cat t.rb
class Foo
  def foo
    p self
  end
end

class Bar < Foo
  def foo
    x = Object.new
    x.instance_eval do
      super
    end
  end
end

Bar.new.foo
defiant:build$ ./ruby-trunk.1124 -v t.rb
ruby 1.9.2dev (2009-11-24 trunk 25909) [i686-linux]
#<Object:0x8590f6c>

Foo#fooが呼ばれるのにselfがObjectという、ちょっとおかしなことになっています。
ちょっと自信がありませんが、一応パッチを添付します。


----------------------------------------
http://redmine.ruby-lang.org