Issue #19742 has been updated by matz (Yukihiro Matsumoto).
First, given the existence of the Module#set_temporary_name method as well, it seems
somewhat confusing what the name of this method implies.
So, it may be necessary to first clarify what this method really wants to accomplish.
In general, in Ruby, the referenced object does not know information about the referencing
object (or variables/constants). Class names are an exception, but we recognize that they
are for convenience purposes only and are not essential information. The proposed method
would have a greater impact than OP thinks, since it would make the ability to retain this
class name essential information in Ruby.
So currently, I am not positive for adding the method (not regarding the name issue).
Matz.
----------------------------------------
Feature #19742: Introduce `Module#anonymous?`
https://bugs.ruby-lang.org/issues/19742#change-106316
* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
----------------------------------------
As a follow-on <from
https://bugs.ruby-lang.org/issues/19521>gt;, I'd like propose
we introduce `Module#anonymous?`.
In some situations, like logging/formatting, serialisation/deserialization, debugging or
meta-programming, we might like to know if a class is a proper constant or not.
However, this brings about some other issues which might need to be discussed.
After assigning a constant, then removing it, the internal state of Ruby still believes
that the class name is permanent, even thought it's no longer true.
e.g.
```
m = Module.new
m.anonymous? # true
M = m
m.anonyomous # false
Object.send(:remove_const, :M)
M # uninitialized constant M (NameError)
m.anonymous? # false
```
Because RCLASS data structure is not updated after the constant is removed, internally the
state still has a "permanent class name".
I want to use this proposal to discuss this issue and whether there is anything we should
do about such behaviour (or even if it's desirable).
Proposed PR:
https://github.com/ruby/ruby/pull/7966
cc @fxn
--
https://bugs.ruby-lang.org/