Actions
Bug #10263
closed`super` does not work from binding eval context
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.0dev (2014-09-19 trunk 47643) [x86_64-darwin13]
Backport:
Description
super
is broken when called from inside a binding eval context.
Test case:
class A
def foo
puts "A#foo"
end
end
class B < A
def foo
binding.eval("super")
end
end
B.new.foo
Expected output:
A#foo
Actual output:
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 9 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]
Updated by nagachika (Tomoyuki Chikanaga) over 9 years ago
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED
Updated by nagachika (Tomoyuki Chikanaga) over 9 years ago
- Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED to 2.0.0: REQUIRED, 2.1: DONE
Backported into ruby_2_1
at r47980.
Updated by usa (Usaku NAKAMURA) over 9 years ago
- Backport changed from 2.0.0: REQUIRED, 2.1: DONE to 2.0.0: DONE, 2.1: DONE
Backported into ruby_2_0_0
at r47987.
Actions
Like0
Like0Like0Like0Like0