Bug #3123
closeduninitialized constant Object::C (NameError)
Description
=begin
いつの間にかトップレベルでの uninitialized constant で Object:: が付くようになってしまっています。
% ruby-trunk -ve C
ruby 1.9.2dev (2010-04-10 trunk 27284) [x86_64-linux]
-e:1:in `': uninitialized constant Object::C (NameError)
%
どこからなのか git bisect で調べてみたところ r25984 からのようです。
=end
Updated by mame (Yusuke Endoh) over 14 years ago
- Target version changed from 1.9.2 to 2.0.0
=begin
遠藤です。
いつの間にかトップレベルでの uninitialized constant で Object:: が付くようになってしまっています。
確かにバグだと思いますが明らかに重大でないことと、直そうとすると
意外と面倒っぽく、revert するのはそっちの方が大変更になるので、
1.9.2 では WONTFIX とします。
1.9.3 以降で元の挙動に戻ることはありえます。
--
Yusuke Endoh mame@tsg.ne.jp
=end
Updated by matz (Yukihiro Matsumoto) over 14 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
This issue was solved with changeset r28293.
Kazuhiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
=end
Updated by mame (Yusuke Endoh) over 14 years ago
=begin
遠藤です。
2010年6月12日11:28 Tadashi Saito shiba@mail2.accsnet.ne.jp:
いつの間にかトップレベルでの uninitialized constant で Object:: が付くようになってしまっています。
確かにバグだと思いますが明らかに重大でないことと、直そうとすると
意外と面倒っぽく、revert するのはそっちの方が大変更になるので、
1.9.2 では WONTFIX とします。まつもとさんのr28293でtrunkでは直ったようなので、WONTFIXにせず、これを
1.9.2にも取り込んで欲しいです。手元では1.9.2でも直るのを確認しました。いちRubyユーザーから言わせていただくと、「明らかに重大である」と思います。
すくなくとも僕の友人のような、Ruby初学者は多いに戸惑って、本を何度も読み直して、
自身をなくす落とし穴になると思います。新たなFAQになりかねないでしょう。
まつもとさんの修正だと class << Object.new; Foo; end のエラー
メッセージが変わってしまいます。
私は Object:: がつくかどうかは重大でないという立場ので、この
程度の非互換は構わないと思いますし、何がなんでもバックポートに
反対でもないです。
でも重大でない問題なら今は極力コードをいじりたくありません。
Object:: がつくかどうかが「明らかに重大である」という立場なら、
このパッチはバックポートはできないと思います。
ちなみに何が重大なんでしょうか。むしろ Object:: がついた方が
初学者には親切なのでは、という気もするのですが。
またまつもとさんの修正はシンプルなものなので、「大変更」にもならないと思います。
簡単に見える変更でも、気が付きにくい問題は入るものです。
--
Yusuke Endoh mame@tsg.ne.jp
=end
Updated by whiteleaf (whiteleaf _) over 14 years ago
=begin
whiteleaf と申します。
むしろ Object:: がついた方が
初学者には親切なのでは、という気もするのですが。
親切だと思えるのはトップレベルで定義した場合 Object に定義される
と知っているからだと思います。
Ruby を使う上では知っておくべき情報だとは思いますが、初学者にとって
は混乱のもとな気もします。
私も重大な問題ではないとは思いますが。
=end