Issue #8298 has been updated by Student (Nathan Zook).


I think that perhaps I was too brief.  My complaint is only that N precedes M (and C) in the ancestor list.  The other matters are clear.

module M ; def foo ; M ; end ; end
module N ; def foo ; N ; end ; end
class C ; include M ; end
module M ; include N ; end
c = C.new
c.extend M
c.foo
=> N

class D ; include M ; end
D.new.foo
=> M

----------------------------------------
Bug #8298: Module include inconsistency
https://bugs.ruby-lang.org/issues/8298#change-39048

Author: Student (Nathan Zook)
Status: Rejected
Priority: Normal
Assignee: 
Category: core
Target version: current: 2.1.0
ruby -v: 1.8, 1.9, 2.0
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


It has been suggested that I report this as a violation of the object model:

module M ; end
module N ; end
class C ; include M ; end
module M ; include N ; end
c = C.new
c.extend M
d = class << c ; self ; end
d.ancestors
=>[N, C, M, Object, Kernel]

This has been this way for a while...




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