Backport #8025
closedModule#included_modules includes classes
Description
I see two problems in the following code:
module Mixin
end
class C
prepend Mixin
end
C.included_modules # => [Mixin, C, Kernel]
-
C should definitely not be there, since no class should ever appear in that list.
-
I wonder if Mixin should be there, since it was prepended to C, not included.
Updated by nobu (Nobuyoshi Nakada) over 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r40612.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
class.c: exclude original module
- class.c (rb_mod_included_modules): should not include the original
module itself. [ruby-core:53158] [Bug #8025]
Updated by nobu (Nobuyoshi Nakada) over 11 years ago
- Tracker changed from Bug to Backport
- Project changed from Ruby master to Backport200
- Category deleted (
core) - Status changed from Closed to Assigned
- Assignee changed from matz (Yukihiro Matsumoto) to nagachika (Tomoyuki Chikanaga)
- Target version deleted (
2.1.0)
Updated by nagachika (Tomoyuki Chikanaga) over 11 years ago
- Assignee changed from nagachika (Tomoyuki Chikanaga) to nobu (Nobuyoshi Nakada)
Hello,
A problem seems to remain in case of inherited Class was prepended by a Module.
See the following sample.
module M1; end
class C1
prepend M1
end
class C2 < C1
end
p C1.included_modules # => [M1, Kernel]
p C2.included_modules # => [M1, C1, Kernel]
Thanks,
Updated by nagachika (Tomoyuki Chikanaga) over 11 years ago
- Assignee changed from nobu (Nobuyoshi Nakada) to nagachika (Tomoyuki Chikanaga)
r40614 is an additional commit. Thank you nobu.
Updated by nagachika (Tomoyuki Chikanaga) over 11 years ago
- Status changed from Assigned to Closed
This issue was solved with changeset r40627.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
merge revision(s) 40612,40614: [Backport #8025]
* class.c (rb_mod_included_modules): should not include the original
module itself. [ruby-core:53158] [Bug #8025]
* class.c (rb_mod_included_modules): should not include non-modules.
[ruby-core:53158] [Bug #8025]