Issue #10406 has been updated by Yukihiro Matsumoto.

Status changed from Assigned to Rejected

Unlike local variables, constants are not resolved statically. That's the reason behind this behavior.
If you have further demand, reopen the issue.

Matz.

----------------------------------------
Feature #10406: Method starting with a capital is not detected when parentheses and receiver are omitted
https://bugs.ruby-lang.org/issues/10406#change-49555

* Author: Tsuyoshi Sawada
* Status: Rejected
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: syntax
* Target version: Next Major
----------------------------------------
A method whose name starts with a capital is not detected when parentheses and receiver are omitted.

~~~ruby
def Foo; puts "foo" end
Foo # => uninitialized constant Foo
~~~

If I disambiguate it as a method, then the method is detected:

~~~ruby
Foo() # => foo
~~~

This kind of consideration if unnecessary if the method name does not start with a capital.

~~~ruby
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).

~~~ruby
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.



-- 
https://bugs.ruby-lang.org/