[ruby-trunk - Feature #7075][Open] const get でトップレベルの定数を参照する時に警告

Issue #7075 has been reported by nagachika (Tomoyuki C.).


Feature #7075: const_get でトップレベルの定数を参照する時に警告

Author: nagachika (Tomoyuki C.)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 2.0.0

class C; end
A = 42
C::A # => warning: toplevel constant A referenced by C::A
C.const_get(:A)

のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが
出力されますが、Module#const_get で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。

Issue #7075 has been updated by ko1 (Koichi Sasada).

Assignee set to nagachika (Tomoyuki C.)

近永さんがさくっと入れちゃうとどうでしょうか.
警告だとあまり困る人は居なさそう?

string concatenation の警告では,テストが全然通らなくなった,という例が
最近あったので,その辺が問題無ければいいような気がするんですが,どうでしょう.

まつもとさん,いかがでしょうか.


Feature #7075: const_get でトップレベルの定数を参照する時に警告

Author: nagachika (Tomoyuki C.)
Status: Open
Priority: Normal
Assignee: nagachika (Tomoyuki C.)
Category:
Target version: 2.0.0

class C; end
A = 42
C::A # => warning: toplevel constant A referenced by C::A
C.const_get(:A)

のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが
出力されますが、Module#const_get で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。

Issue #7075 has been updated by matz (Yukihiro M.).

const_getをする人は事態を把握しているのではないかと思って警告してなかったんですが、必要ですかねえ。
まあ、やってみてくださっても構いません。

Feature #7075: const_get でトップレベルの定数を参照する時に警告

Author: nagachika (Tomoyuki C.)
Status: Open
Priority: Normal
Assignee: nagachika (Tomoyuki C.)
Category:
Target version: 2.0.0

class C; end
A = 42
C::A # => warning: toplevel constant A referenced by C::A
C.const_get(:A)

のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが
出力されますが、Module#const_get で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。

Issue #7075 has been updated by nagachika (Tomoyuki C.).

Status changed from Assigned to Rejected

反応が遅くなってすみません。

const_get の第2引数に false を指定すると C は取れなくなるので、第2引数の指定忘れに気がつくかと思って提案してました。
しかしわかっててあえて利用する可能性もあるというのは確かにありそうなので取り下げます。


Feature #7075: const_get でトップレベルの定数を参照する時に警告

Author: nagachika (Tomoyuki C.)
Status: Rejected
Priority: Normal
Assignee: nagachika (Tomoyuki C.)
Category:
Target version: next minor

class C; end
A = 42
C::A # => warning: toplevel constant A referenced by C::A
C.const_get(:A)

のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが
出力されますが、Module#const_get で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。

Issue #7075 has been updated by mame (Yusuke E.).

Status changed from Open to Assigned
Target version changed from 2.0.0 to next minor

私も matz に賛成です。
const_get のようなリフレクションは自分の足を撃つための裏道という認識です。
private constant も const_get なら読み出せるとか。

まだコミットされていないようですし、next minor にしときます。


Yusuke E. [email protected]

Feature #7075: const_get でトップレベルの定数を参照する時に警告

Author: nagachika (Tomoyuki C.)
Status: Assigned
Priority: Normal
Assignee: nagachika (Tomoyuki C.)
Category:
Target version: next minor

class C; end
A = 42
C::A # => warning: toplevel constant A referenced by C::A
C.const_get(:A)

のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが
出力されますが、Module#const_get で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。