mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
Add instance_methods to class generated by DelegateClass
Also, make DelegateClass.instance_method fallback to superclass. Fixes [Bug #16982]
This commit is contained in:
parent
7a479b30b6
commit
ba81bc24e6
Notes:
git
2020-07-10 07:01:37 +09:00
Merged: https://github.com/ruby/ruby/pull/3221 Merged-By: jeremyevans <code@jeremyevans.net>
2 changed files with 49 additions and 0 deletions
|
@ -422,6 +422,21 @@ def DelegateClass(superclass, &block)
|
|||
klass.define_singleton_method :protected_instance_methods do |all=true|
|
||||
super(all) | superclass.protected_instance_methods
|
||||
end
|
||||
klass.define_singleton_method :instance_methods do |all=true|
|
||||
super(all) | superclass.instance_methods
|
||||
end
|
||||
klass.define_singleton_method :public_instance_method do |name|
|
||||
super(name)
|
||||
rescue NameError
|
||||
raise unless self.public_instance_methods.include?(name)
|
||||
superclass.public_instance_method(name)
|
||||
end
|
||||
klass.define_singleton_method :instance_method do |name|
|
||||
super(name)
|
||||
rescue NameError
|
||||
raise unless self.instance_methods.include?(name)
|
||||
superclass.instance_method(name)
|
||||
end
|
||||
klass.module_eval(&block) if block
|
||||
return klass
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue