From: antoniopedrosilvapinto+ruby-lang@... Date: 2018-07-05T17:35:05+00:00 Subject: [ruby-core:87817] [Ruby trunk Bug#14895] Inconsistent constant names when using const_set on a singleton class Issue #14895 has been updated by silver_phoenix (Pedro Pinto). So, what you're saying is that the singleton class is being assigned to a constant when it creates module `A`, so modules are only named after this step? Is this expected behavior then? ---------------------------------------- Bug #14895: Inconsistent constant names when using const_set on a singleton class https://bugs.ruby-lang.org/issues/14895#change-72835 * Author: silver_phoenix (Pedro Pinto) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ``` irb(main):001:0> class X; end => nil irb(main):002:0> X.const_set(:Y, Module.new) => X::Y irb(main):003:0> module M; end => nil irb(main):004:0> M.const_set(:N, Module.new) => M::N irb(main):005:0> x = Object.new => # irb(main):006:0> x.singleton_class.const_set(:Z, Module.new) => # irb(main):007:0> x.singleton_class.class_eval "module A; self end" => #::A irb(main):008:0> x.singleton_class.const_set(:B, Module.new) => #::B ``` I would expect module `Z` to be named, but the modules only start being named after creating module `A` through the `module` builtin. For consistency, if module `B` is named, shouldn't module `Z` be named as well? Also happens in these ruby versions: `ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]` `ruby 2.5.1p57 (2018-03-29 revision 63029) [i386-mingw32]` -- https://bugs.ruby-lang.org/ Unsubscribe: