Project

General

Profile

Actions

Bug #3123

closed

uninitialized constant Object::C (NameError)

Added by znz (Kazuhiro NISHIYAMA) almost 14 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2dev (2010-04-10 trunk 27284) [x86_64-linux]
Backport:
[ruby-dev:40951]

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

Actions #1

Updated by mame (Yusuke Endoh) almost 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
=end

Actions #2

Updated by matz (Yukihiro Matsumoto) almost 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

Actions #3

Updated by mame (Yusuke Endoh) almost 14 years ago

=begin
遠藤です。

2010年6月12日11:28 Tadashi Saito :

いつの間にかトップレベルでの 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

=end

Actions #4

Updated by whiteleaf (whiteleaf _) almost 14 years ago

=begin
whiteleaf と申します。

むしろ Object:: がついた方が
初学者には親切なのでは、という気もするのですが。

親切だと思えるのはトップレベルで定義した場合 Object に定義される
と知っているからだと思います。
Ruby を使う上では知っておくべき情報だとは思いますが、初学者にとって
は混乱のもとな気もします。

私も重大な問題ではないとは思いますが。

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0