variable.c: make the hidden ivars classpath and tmp_classpath the source
of truth for module and constant names. Assign to them when modules are bind
to constants.
variable.c: remove references to module name cache, as what used to be the cache
is now the source of truth. Remove rb_class_path_no_cache().
variable.c: remove the hidden ivar classid. This existed for the purposes of
module name search, which is now replaced. Also, remove the associated
rb_name_class().
class.c: use rb_set_class_path_string to set the name of Object during boot.
Must use a fstring as this runs before rb_cString is initialized and
creating a normal string leads to a VALUE without a class.
spec/ruby/core/module/name_spec.rb: add a few specs to specify what happens
to Module#name across multiple operations. These specs pass without other
code changes in this commit.
Eagerly name modules and classes
variable.c: make the hidden ivars
classpath
andtmp_classpath
the sourceof truth for module and constant names. Assign to them when modules are bind
to constants.
variable.c: remove references to module name cache, as what used to be the cache
is now the source of truth. Remove rb_class_path_no_cache().
variable.c: remove the hidden ivar
classid
. This existed for the purposes ofmodule name search, which is now replaced. Also, remove the associated
rb_name_class().
class.c: use rb_set_class_path_string to set the name of Object during boot.
Must use a fstring as this runs before rb_cString is initialized and
creating a normal string leads to a VALUE without a class.
spec/ruby/core/module/name_spec.rb: add a few specs to specify what happens
to Module#name across multiple operations. These specs pass without other
code changes in this commit.
[Feature #15765]