Method starting with a capital is not detected when parentheses and receiver are omitted
A method whose name starts with a capital is not detected when parentheses and receiver are omitted.
def Foo; puts "foo" end Foo # => uninitialized constant Foo
If I disambiguate it as a method, then the method is detected:
Foo() # => foo
This kind of consideration if unnecessary if the method name does not start with a capital.
def foo; puts "foo" end foo # => foo
So I expect method
Foo to be detected without explicit receiver and arguments (unless there is a constant with the same name).
def Foo; puts "foo" end
I first thought this as a bug. If it is not a bug, then I would like to ask this as a feature request.
#3 [ruby-core:65814] Updated by sawa (Tsuyoshi Sawada) about 3 years ago
Yusuke Endoh wrote:
I believe this is intentional. Otherwise, we would become unable to refer Array, Integer, Float, String, and Hash classes because of Kernel#Array and so on ;-)
Just like local variables have precedence over method look up, I expect that constants have precedence over method look up, so I don't think that would be a problem.