`super` does not work from binding eval context
super is broken when called from inside a binding eval context.
class A def foo puts "A#foo" end end class B < A def foo binding.eval("super") end end B.new.foo
x.rb:11:in `foo': self has wrong type to call super in this context: B (expected Binding) (TypeError) from x.rb:11:in `eval' from x.rb:11:in `foo' from x.rb:15:in `<main>'
This appears to be a regression in 2.0.0, as the code sample above worked as expected on 1.9.3.
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
Applied in changeset r47645.
vm_eval.c: fix super from eval with scope
- vm_eval.c (eval_string_with_cref): fix super from eval with scope. set klass in the current control frame to the class of the receiver in the context to be evaluated, this class/module must match the actual receiver to call super. [ruby-core:65122] [Bug #10263]