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 のように警告メッセージをリダイレクトしてコード内で定数の再定義を捕捉したい場合に、名前空間なしでは問題になっている定数を再現できません。
on 2012-10-20 04:01
on 2012-11-24 01:33
Issue #7190 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to nobu (Nobuyoshi Nakada) Target version set to next minor ---------------------------------------- Feature #7190: warning: already initialized constant の書式 https://bugs.ruby-lang.org/issues/7190#change-33685 Author: sawa (Tsuyoshi Sawada) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: next minor 未定義の定数を参照した場合のエラーメッセージでは名前空間がすべて表示されます: 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 のように警告メッセージをリダイレクトしてコード内で定数の再定義を捕捉したい場合に、名前空間なしでは問題になっている定数を再現できません。
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.