
Issue #11064 has been updated by Eregon (Benoit Daloze). It's not because it has a constant name. It's because `nil.class => NilClass` and `nil.singleton_class => NilClass`. That means both the class and singleton class of `nil` is the same class object. And it may be weird if `obj.class.singleton_class?` is true but only for those nil/false/true. Also if NilClass was really a singleton class (`singleton_class?` => true) then what would be the non-singleton class/the superclass? It could be `Object`, but weird again. If they were different class objects it would probably be confusing and incompatible. AT this point it seems difficult to resolve and probably not worth it. ---------------------------------------- Bug #11064: #singleton_methods for objects with special singleton_class returns an empty array https://bugs.ruby-lang.org/issues/11064#change-100789 * Author: rbjl (Jan Lelis) * Status: Open * Priority: Normal * ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- ~~~ def nil.bla 42 end # works nil.bla #=> 42 nil.singleton_method(:bla) #=> #<Method: NilClass#bla> NilClass.instance_methods.include? :bla #=> true # does not work nil.singleton_methods #=> [] ~~~ -- https://bugs.ruby-lang.org/