Issue #11301 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Closed

This was fixed between Ruby 2.2 and Ruby 2.3:

```
$ ruby23 -e "module M; end; class A; prepend M; end; class B<A; prepend M; end; p B.ancestors"
[M, B, M, A, Object, Kernel, BasicObject]
$ ruby22 -e "module M; end; class A; prepend M; end; class B<A; prepend M; end; p B.ancestors"
[B, M, A, Object, Kernel, BasicObject]
```

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

* Author: matz (Yukihiro Matsumoto)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* 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/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>