Project

General

Profile

Actions

Feature #10406

closed

Method starting with a capital is not detected when parentheses and receiver are omitted

Added by sawa (Tsuyoshi Sawada) about 10 years ago. Updated about 10 years ago.

Status:
Rejected
Target version:
[ruby-core:65810]

Description

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.

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

  • Tracker changed from Bug to Feature
  • Category set to syntax
  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)
  • Target version set to 3.0

It's a ruby's naming rule.

Updated by mame (Yusuke Endoh) about 10 years ago

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 ;-)

--
Yusuke Endoh

Updated by sawa (Tsuyoshi Sawada) about 10 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.

Updated by mame (Yusuke Endoh) about 10 years ago

Oops, I see. Sorry for the noise!

--
Yusuke Endoh

Updated by matz (Yukihiro Matsumoto) about 10 years ago

  • 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0