Project

General

Profile

Actions

Feature #7075

closed

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

Added by nagachika (Tomoyuki Chikanaga) over 11 years ago. Updated over 11 years ago.

Status:
Rejected
Target version:
[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) over 11 years ago

  • Assignee set to nagachika (Tomoyuki Chikanaga)

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

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

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

Updated by matz (Yukihiro Matsumoto) over 11 years ago

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

Updated by mame (Yusuke Endoh) over 11 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

Updated by nagachika (Tomoyuki Chikanaga) over 11 years ago

  • Status changed from Assigned to Rejected

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

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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0