[ruby-trunk - Bug #5748][Open] class eval ブロック内での定数のスコープがドキュメントと矛盾

Issue #5748 has been reported by Yasunori Miyamoto.


Bug #5748: class_eval ブロック内での定数のスコープがドキュメントと矛盾

Author: Yasunori Miyamoto
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

以下の class_eval の説明によると、

定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
とのことですが、以下のコードを実行すると NameError が発生します。

class MyClass
CONST = “MyClass”
end

MyClass.class_eval do
p CONST # => NameError
end

実行結果:
test.rb:6:in block in <main>': uninitialized constant CONST (NameError) from test.rb:5:in class_eval’
from test.rb:5:in `’

期待した結果:
“MyClass” と表示される。

Issue #5748 has been updated by Yukihiro M…

ドキュメントの間違いです。class_evalは定数の探索経路を変えません。

Bug #5748: class_eval ブロック内での定数のスコープがドキュメントと矛盾

Author: Yasunori Miyamoto
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

以下の class_eval の説明によると、

定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
とのことですが、以下のコードを実行すると NameError が発生します。

class MyClass
CONST = “MyClass”
end

MyClass.class_eval do
p CONST # => NameError
end

実行結果:
test.rb:6:in block in <main>': uninitialized constant CONST (NameError) from test.rb:5:in class_eval’
from test.rb:5:in `’

期待した結果:
“MyClass” と表示される。

Issue #5748 has been updated by Yasunori Miyamoto.

るりまプロジェクトの方に新しくチケットを作成しました。
#5760

そのため、こちらはクローズして良いと思います。

Bug #5748: class_eval ブロック内での定数のスコープがドキュメントと矛盾

Author: Yasunori Miyamoto
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

以下の class_eval の説明によると、

定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
とのことですが、以下のコードを実行すると NameError が発生します。

class MyClass
CONST = “MyClass”
end

MyClass.class_eval do
p CONST # => NameError
end

実行結果:
test.rb:6:in block in <main>': uninitialized constant CONST (NameError) from test.rb:5:in class_eval’
from test.rb:5:in `’

期待した結果:
“MyClass” と表示される。

Issue #5748 has been updated by Shota F…

Status changed from Open to Closed


Bug #5748: class_eval ブロック内での定数のスコープがドキュメントと矛盾

Author: Yasunori Miyamoto
Status: Closed
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

以下の class_eval の説明によると、

定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
とのことですが、以下のコードを実行すると NameError が発生します。

class MyClass
CONST = “MyClass”
end

MyClass.class_eval do
p CONST # => NameError
end

実行結果:
test.rb:6:in block in <main>': uninitialized constant CONST (NameError) from test.rb:5:in class_eval’
from test.rb:5:in `’

期待した結果:
“MyClass” と表示される。