Issue #16736 has been updated by mame (Yusuke Endoh).

Assignee set to jeremyevans0 (Jeremy Evans)
Status changed from Open to Assigned

----------------------------------------
Bug #16736: Prepending blank module breaks super call in aliased method
https://bugs.ruby-lang.org/issues/16736#change-84769

* Author: tycooon (Yuri Smirnov)
* Status: Assigned
* Priority: Normal
* Assignee: jeremyevans0 (Jeremy Evans)
* ruby -v: 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Here is the test script:

```
class A
  def key
    ["some_key"]
  end
end

module M
  prepend Module.new

  def self.included(base)
    base.alias_method :base_key, :key
  end

  def key
    super + ["new_key"]
  end

  def generate
    base_key
  end
end

class B < A
  include M
end

x = B.new
p x.generate

```

In Ruby 2.7 I get the following error:

```
Traceback (most recent call last):
	2: from test.rb:28:in `<main>'
	1: from test.rb:19:in `generate'
test.rb:15:in `key': super: no superclass method `key' for #<B:0x00007fbc1704d028> (NoMethodError)
```

If I remove the `prepend Module.new` line or switch to Ruby 2.6, I get the expected result:

```
["some_key", "new_key"]
```



-- 
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>