Issue #7190 has been reported by sawa (Tsuyoshi Sawada).

----------------------------------------
Feature #7190: warning: already initialized constant の書式
https://bugs.ruby-lang.org/issues/7190

Author: sawa (Tsuyoshi Sawada)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


未定義の定数を参照した場合のエラーメッセージでは名前空間がすべて表示されます:

    module A; B; end
    #=> NameError: uninitialized constant A::B
    A::B
    #=> NameError: uninitialized constant A::B

しかし、既に定義してある定数を再定義した場合の警告メッセージでは名前空間が表示されません:

    module A; B = :foo end
    module A; B = :bar end
    #=> warning: already initialized constant B
    A::B = :baz
    #=> warning: already initialized constant B

後者の場合も前者の場合にならって名前空間を表示した方がよいと思います。

    warning: already initialized constant A::B

メタプログラミングで、$stderr = StringIO.new のように警告メッセージをリダイレクトしてコード内で定数の再定義を捕捉したい場合に、名前空間なしでは問題になっている定数を再現できません。


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