[ruby-core:94974] [Ruby master Bug#11636] super in instance_eval in a method defined in a module is invoked with a wrong receiver
From:
matz@...
Date:
2019-09-19 07:38:52 UTC
List:
ruby-core #94974
Issue #11636 has been updated by matz (Yukihiro Matsumoto).
This bug should be fixed. @nobu could you review the patch?
Matz.
----------------------------------------
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-81591
* Author: shugo (Shugo Maeda)
* Status: Assigned
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version:
* 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).
---Files--------------------------------
instance_eval-module-super-11636.patch (4.93 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>