[ruby-core:69725] [Ruby trunk - Bug #11301] Module#prepend should have always added the module before the current

From: nobu@...
Date: 2015-06-24 06:54:30 UTC
List: ruby-core #69725
Issue #11301 has been updated by Nobuyoshi Nakada.

Description updated

I think we have tried it some times but not made a conclusion.

Change `Module#prepend` only?

----------------------------------------
Bug #11301: Module#prepend should have always added the module before the current
https://bugs.ruby-lang.org/issues/11301#change-53106

* Author: Yukihiro Matsumoto
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
I don't think it's ideal:

~~~ruby
module M
end  

class A
  prepend M
end  

A.ancestors
# => [M, A, Object, PP::ObjectMixin, Kernel, BasicObject]

class B<A
  prepend M
end  
B.ancestors
# => [B, M, A, Object, PP::ObjectMixin, Kernel, BasicObject]
~~~

It should be either error (for not adding module) or the module appearing multiple times,
i.e. `B.ancestors` to be

~~~
[M, B, M, A, Object, PP::ObjectMixin, Kernel, BasicObject]
~~~

Matz.




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

In This Thread

Prev Next