Project

General

Profile

ActionsLike0

Bug #8841

closed

Module#included_modules and prepended modules

Added by marcandre (Marc-Andre Lafortune) over 11 years ago. Updated about 5 years ago.

Status:
Closed
Target version:
-
ruby -v:
r42735
Backport:
[ruby-core:56898]
Tags:

Description

The documentation for Module#included_modules currently states "Returns the list of modules included in +mod+."

This was never perfectly accurate, as the list also contains modules included in +mod+'s ancestors.

It now also includes prepended modules.

This is consistent with include? that returns true for prepended modules, but not quite consistent with included that does not get called for prepended modules.

Matz, could you confirm that current behavior is what you want?

If so, we should fix the documentation of include? and included_modules.


Related issues 1 (0 open1 closed)

Related to Ruby - Feature #8026: Need Module#prepended_modulesFeedbackmatz (Yukihiro Matsumoto)Actions
Like0Actions #1

Updated by naruse (Yui NARUSE) over 7 years ago

  • Target version deleted (2.6)

Updated by mame (Yusuke Endoh) over 5 years ago

Summary:

  • Module#include? and Module#included_modules regard prepended modules as included (not well documented)
  • Module#included is not called when the module is prepended

Is this right?

Updated by byroot (Jean Boussier) over 5 years ago

Module#included is not called when the module is prepended

I think that's fine, because it calls Module#prepended.

Module#include? and Module#included_modules regard prepended modules as included (not well documented)

That yes:

class Base
end

module A
end

module B
end

Base.prepend(A)
Base.include(B)

p Base.included_modules

outputs:

[A, B, Kernel]

Updated by matz (Yukihiro Matsumoto) about 5 years ago

  • Status changed from Open to Closed

This intentional.

Matz.

Updated by marcandre (Marc-Andre Lafortune) about 5 years ago

Thank you.

I clarified the documentation to reflect this.

ActionsLike0

Also available in: Atom PDF