Issue #10263 has been updated by Nobuyoshi Nakada.

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]

----------------------------------------
Bug #10263: `super` does not work from binding eval context
https://bugs.ruby-lang.org/issues/10263#change-48984

* Author: Charlie Somerville
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.2.0dev (2014-09-19 trunk 47643) [x86_64-darwin13]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
`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.



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