[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-core
Subject:    [ruby-core:54694] [ruby-trunk - Bug #8298][Rejected] Module include inconsistency
From:       "matz (Yukihiro Matsumoto)" <matz () ruby-lang ! org>
Date:       2013-04-29 13:24:16
Message-ID: redmine.journal-39040.20130429222416 () ruby-lang ! org
[Download RAW message or body]


Issue #8298 has been updated by matz (Yukihiro Matsumoto).

Status changed from Open to Rejected

This is official restriction on module mix-in.

(1) modifications to modules after they are included would not be change existing \
relation, thus N will not be included to C. (2) #include does not add already \
included modules, thus M will not be included to c.singleton_method (but N will be). \
(3) #ancestors on a singleton classes does not show the singleton class itself.

The last one might be considered as a bug.  But we have no plan to fix others.

Matz.



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

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/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic