Actions
Bug #11655
closedCan't refine Object.const_missing
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-11-04 trunk 52451) [x86_64-linux]
Description
TracePoint.new(:c_call) { |tp|
if tp.method_id == :const_missing
puts "top-level const_missing is #{tp.self}'s"
end
}.enable { Foo rescue 1 }
# => top-level const_missing is Object's
module M
refine Object.singleton_class do
def const_missing c
'Explicit invocation works.'
end
def new
'Can refine other singleton methods.'
end
end
end
using M
puts Object.const_missing :Foo
# => Explicit invocation works.
Foo rescue p $!
# => #<NameError: uninitialized constant Foo>
def Object.const_missing c
'So does direct definition.'
end
puts Foo
# => So does direct definition.
puts Object.new
# => Can refine other singleton methods.
Is it a bug?
Actions
Like0
Like0Like0Like0Like0