Project

General

Profile

Actions

Bug #601

closed

an instance of Bignum can have singleton methods

Added by yugui (Yuki Sonoda) over 15 years ago. Updated almost 13 years ago.

Status:
Closed
ruby -v:
Backport:
[ruby-dev:36569]

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


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #3222: Can bignums have singleton class & methods?Closedko1 (Koichi Sasada)04/30/2010Actions
Actions #1

Updated by ko1 (Koichi Sasada) over 15 years ago

  • Assignee set to matz (Yukihiro Matsumoto)

=begin

=end

Actions #2

Updated by yugui (Yuki Sonoda) over 15 years ago

  • Target version set to 1.9.1 Release Candidate

=begin

=end

Actions #3

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

Actions #4

Updated by matz (Yukihiro Matsumoto) over 15 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19835.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0