From: alanwucanada@... Date: 2019-03-10T00:44:46+00:00 Subject: [ruby-core:91732] [Ruby trunk Bug#15646] method_defined? inside method_added behaves differently for `initialize` Issue #15646 has been updated by alanwu (Alan Wu). This behavior is from [Feature #6539]. Do you remember why these methods are made to be always private, instead of setting them to be private in Kernel only? I don't think this rule make sense for BasicObject classes since they don't have `#dup` and `#clone` and `#respond_to?`: ```ruby class A < BasicObject public def initialize_dup end end A.new.initialize_dup # private method `initialize_dup' called ``` ---------------------------------------- Bug #15646: method_defined? inside method_added behaves differently for `initialize` https://bugs.ruby-lang.org/issues/15646#change-77008 * Author: alanwu (Alan Wu) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.7.0dev (2019-03-08 trunk 67194) [x86_64-darwin18] * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Repro: ```ruby class MethodAddedSpecialCase def self.method_added(name) puts "#{name} added, method_defined?: #{method_defined?(name)}" end def hello end def initialize end def world end end ``` Output: ``` hello added, method_defined?: true initialize added, method_defined?: false world added, method_defined?: true ``` -- https://bugs.ruby-lang.org/ Unsubscribe: