Bug #601
closedan instance of Bignum can have singleton methods
Description
=begin
Bignumのインスタンスが特異メソッドを持てるようです。
$ ruby19 -e 'x = (1 << 64); begin; def x.foo; p 1; end; rescue; end; x.foo'
#=> 1
(by mameさん)
現在の「Fixnumに対する一貫性 + どうせ誰も使わない」という設計意図からすれば特異クラスを作ろうとする時点でTypeErrorになるべきではないでしょうか。
=end
Updated by ko1 (Koichi Sasada) about 16 years ago
- Assignee set to matz (Yukihiro Matsumoto)
=begin
=end
Updated by yugui (Yuki Sonoda) about 16 years ago
- Target version set to 1.9.1 Release Candidate
=begin
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:36569] [Bug #601] an instance of Bignum can have singleton methods"
on Thu, 25 Sep 2008 22:10:30 +0900, Yuki Sonoda redmine@ruby-lang.org writes:
|Bignumのインスタンスが特異メソッドを持てるようです。
一応、例外が出るんですけど。
| $ ruby19 -e 'x = (1 << 64); begin; def x.foo; p 1; end; rescue; end; x.foo'
| #=> 1
|(by mameさん)
このケースではわざわざ補足してますからねえ。
|現在の「Fixnumに対する一貫性 + どうせ誰も使わない」という設計意図からすれば特異クラスを作ろうとする時点でTypeErrorになるべきではないでしょうか。
いちいち、特異クラスを作る時点でNumericのサブクラスかどうか
チェックするのはコストが増加するのであまりうれしくないので、
singleton_method_addedの中で定義されたメソッドを削除すること
にします。もちろん、singleton_method_addedをundefすれば定義
できるようになってしまうわけですが、そこまでは面倒みきれない
と思います。
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r19835.
=end