ActionsLike0
Feature #7075
closedconst_get でトップレベルの定数を参照する時に警告
[ruby-dev:<unknown>]
Description
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 で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。
Updated by ko1 (Koichi Sasada) about 12 years ago
- Assignee set to nagachika (Tomoyuki Chikanaga)
近永さんがさくっと入れちゃうとどうでしょうか.
警告だとあまり困る人は居なさそう?
string concatenation の警告では,テストが全然通らなくなった,という例が
最近あったので,その辺が問題無ければいいような気がするんですが,どうでしょう.
まつもとさん,いかがでしょうか.
Updated by matz (Yukihiro Matsumoto) about 12 years ago
const_getをする人は事態を把握しているのではないかと思って警告してなかったんですが、必要ですかねえ。
まあ、やってみてくださっても構いません。
Updated by mame (Yusuke Endoh) about 12 years ago
- Status changed from Open to Assigned
- Target version changed from 2.0.0 to 2.6
私も matz に賛成です。
const_get のようなリフレクションは自分の足を撃つための裏道という認識です。
private constant も const_get なら読み出せるとか。
まだコミットされていないようですし、next minor にしときます。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by nagachika (Tomoyuki Chikanaga) about 12 years ago
- Status changed from Assigned to Rejected
反応が遅くなってすみません。
const_get の第2引数に false を指定すると C は取れなくなるので、第2引数の指定忘れに気がつくかと思って提案してました。
しかしわかっててあえて利用する可能性もあるというのは確かにありそうなので取り下げます。
ActionsLike0