Bug #2402
Updated by nobu (Nobuyoshi Nakada) about 9 years ago
`instance_eval`のブロック内で`super`を呼ぶと、`instance_eval`で変更された `self`に対して`super`の呼び出しを行ってしまうようです。 ~~~ruby =begin 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という、ちょっとおかしなことになっています。 ちょっと自信がありませんが、一応パッチを添付します。 ~~~ `Foo#foo`が呼ばれるのに`self`が`Object`という、ちょっとおかしなことになっています。 ちょっと自信がありませんが、一応パッチを添付します。 =end