From: knu@... Date: 2017-03-02T11:16:52+00:00 Subject: [ruby-core:79870] [Ruby trunk Bug#13257] Symbol#singleton_class should be undef Issue #13257 has been updated by Akinori MUSHA. What's the motivation behind this? You cannot tell if an object has no singleton class just because it doesn't define or respond to #singleton_class anyway. BasicObject is an exception, and I could imagine certain kinds of objects (for delegate/proxy/mocking) might have their reasons they shouldn't undefine #singleton_method. If you have an object, then `(class << object; true; end rescue false)` would be the best way to test if it has a singleton class. ---------------------------------------- Bug #13257: Symbol#singleton_class should be undef https://bugs.ruby-lang.org/issues/13257#change-63303 * Author: Satoshi TAGOMORI * Status: Feedback * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin15] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Objects of some classes doesn't have singleton classes (e.g., Symbol, Integer, Float...). Symbol#singleton_class raises TypeError. But Symbol#respond_to?(:singleton_class) returns true, and we cannot know when #singleton_class returns a valid class or raise errors in any way (except for calling it). I think that such #singleton_class methods should be undef. -- https://bugs.ruby-lang.org/ Unsubscribe: