Feature #7075

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

Added by Tomoyuki Chikanaga over 1 year ago. Updated over 1 year ago.

[ruby-dev:<unknown>]
Status:Rejected
Priority:Normal
Assignee:Tomoyuki Chikanaga
Category:-
Target version:next minor

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 で参照する時は警告が出力されません。
同じように警告が出たほうがよいと考えますがどうでしょう。

History

#1 Updated by Koichi Sasada over 1 year ago

  • Assignee set to Tomoyuki Chikanaga

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

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

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

#2 Updated by Yukihiro Matsumoto over 1 year ago

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

#3 Updated by Yusuke Endoh over 1 year ago

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

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

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

Yusuke Endoh mame@tsg.ne.jp

#4 Updated by Tomoyuki Chikanaga over 1 year ago

  • Status changed from Assigned to Rejected

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

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

Also available in: Atom PDF