Bug #7190

warning: already initialized constant の書式

Added by Tsuyoshi Sawada over 1 year ago. Updated over 1 year ago.

[ruby-dev:46239]
Status:Closed
Priority:Normal
Assignee:Nobuyoshi Nakada
Category:-
Target version:next minor
ruby -v: Backport:

Description

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

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 のように警告メッセージをリダイレクトしてコード内で定数の再定義を捕捉したい場合に、名前空間なしでは問題になっている定数を再現できません。

Associated revisions

Revision 37990
Added by Nobuyoshi Nakada over 1 year ago

variable.c: show namespace

  • variable.c (rbconstset): show namespace in warning messages. [Feature #7190]

History

#1 Updated by Yusuke Endoh over 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to Nobuyoshi Nakada
  • Target version set to next minor

#2 Updated by Yukihiro Matsumoto over 1 year ago

  • Tracker changed from Feature to Bug

バグ扱いで直しちゃってもいいんじゃないですかね。

Matz.

#3 Updated by Nobuyoshi Nakada over 1 year ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37990.
Tsuyoshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


variable.c: show namespace

  • variable.c (rbconstset): show namespace in warning messages. [Feature #7190]

Also available in: Atom PDF