Actions
Bug #15274
closedReflection does not report methods defined only in refinements
Description
class C
end
module M
refine C do
def foo
puts "C#foo in M"
end
end
end
using M
c = C.new
c.foo # prints "C#foo in M"
c.send :foo
p c.respond_to? :foo
p c.methods.include?(:foo)
p C.instance_methods.include?(:foo)
p((c.method(:foo) rescue false))
__END__
Prints:
C#foo in M
C#foo in M
false
false
false
false
When the refinement M is used I think it would be less surprising if reflection methods (respond_to?, methods, method, instance_methods) report available methods including the ones coming from refinement.
Actions
Like0
Like0