[ruby-core:71576] [Ruby trunk - Bug #11636] super in instance_eval in a method defined in a module is invoked with a wrong receiver

From: ko1@...
Date: 2015-11-19 07:20:01 UTC
List: ruby-core #71576
Issue #11636 has been updated by Koichi Sasada.


I don't touch this behavior because Ruby 2.3 preview 1 was already released.
I try it on Ruby 2.4.


----------------------------------------
Bug #11636: super in instance_eval in a method defined in a module is invoked with a wrong receiver
https://bugs.ruby-lang.org/issues/11636#change-54958

* Author: Shugo Maeda
* Status: Assigned
* Priority: Normal
* Assignee: Koichi Sasada
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
super in instance_eval in a method defined in a module is invoked with a wrong receiver:

```ruby
class Foo
  def initialize
    @foo = :foo
  end

  def foo
    p [self, @foo]
  end
end

module M
  def foo
    x = Object.new
    x.instance_eval do
      super
    end
  end
end

class Bar < Foo
  include M
end

Bar.new.foo
```

The output should be [#<Foo:...>, :foo] or an exception.
Matz prefer the former (https://twitter.com/yukihiro_matz/status/659913844861464576).




-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next