Bug #601
an instance of Bignum can have singleton methods
| Status: | Closed | Start date: | 09/25/2008 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | core | |||
| Target version: | 1.9.1 Release Candidate | |||
| ruby -v: |
Description
Bignumのインスタンスが特異メソッドを持てるようです。 $ ruby19 -e 'x = (1 << 64); begin; def x.foo; p 1; end; rescue; end; x.foo' #=> 1 (by mameさん) 現在の「Fixnumに対する一貫性 + どうせ誰も使わない」という設計意図からすれば特異クラスを作ろうとする時点でTypeErrorになるべきではないでしょうか。
Related issues
| related to ruby-trunk - Feature #3222: Can bignums have singleton class & methods? | Assigned | 04/30/2010 |
Associated revisions
* numeric.c (num_sadded): remove newly defined singleton method
that should not exist after exception handling. [ruby-dev:36569]
History
Updated by Koichi Sasada over 3 years ago
- Assignee set to Yukihiro Matsumoto
Updated by Yuki Sonoda over 3 years ago
- Target version set to 1.9.1 Release Candidate
Updated by Yukihiro Matsumoto over 3 years ago
まつもと ゆきひろです 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すれば定義 できるようになってしまうわけですが、そこまでは面倒みきれない と思います。
Updated by Yukihiro Matsumoto over 3 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
Applied in changeset r19835.