Bug #891
closedMiniTest::Assertions#assert_instance_of should use Object#instance_of?
Description
=begin
タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?
test/unit では Object#instance_of? を使用していました。
=end
Updated by matz (Yukihiro Matsumoto) almost 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37458] [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 16:26:38 +0900, okkez _ redmine@ruby-lang.org writes:
|タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?
このふたつは同じ働きですが、「おかしい」というのはどういう意
味でしょうか。「より良く意図を表現する」とかいうような意味で
あれば、バグとは言えないような。
=end
Updated by rubikitch (rubikitch .) almost 16 years ago
=begin
From: Yukihiro Matsumoto matz@ruby-lang.org
Subject: [ruby-dev:37459] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?
Date: Tue, 16 Dec 2008 17:33:46 +0900
|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?
このふたつは同じ働きですが、「おかしい」というのはどういう意
Object#instance_of?はサブクラスだとだめですよね。
Numeric === 1 # => true
Fixnum === 1 # => true
1.instance_of? Fixnum # => true
1.instance_of? Numeric # => false
--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/
=end
Updated by okkez (okkez _) almost 16 years ago
=begin
okkez です。
Ruby のリビルドをしてる間にるびきちさんがフォローしてくださってますが¶
さっきビルドした Ruby で確認してみました。¶
2008/12/16 17:33 Yukihiro Matsumoto matz@ruby-lang.org:
まつもと ゆきひろです
In message "Re: [ruby-dev:37458] [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 16:26:38 +0900, okkez _ redmine@ruby-lang.org writes:|タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?このふたつは同じ働きですが、「おかしい」というのはどういう意
味でしょうか。「より良く意図を表現する」とかいうような意味で
あれば、バグとは言えないような。
以下のような実行結果になるからです。
Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
場合だけ true を返します。
RUBY_DESCRIPTION
=> "ruby 1.9.1 (2008-12-16 revision 20782) [i686-linux]"
String === 'a'
=> true
Object === 'a'
=> true
'a'.kind_of?(String)
=> true
'a'.kind_of?(Object)
=> true
'a'.instance_of?(String)
=> true
'a'.instance_of?(Object)
=> false
--
okkez
okkez000@gmail.com
=end
Updated by matz (Yukihiro Matsumoto) almost 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37464] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 20:22:23 +0900, okkez okkez000@gmail.com writes:
|以下のような実行結果になるからです。
|Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
|場合だけ true を返します。
なるほど。コミットします。
ただ、minitestはRyan Davisがメンテナですから、今後は
ruby-coreにレポートしていただくのが確実だと思います。今回の
コミットがロストしなきゃいいけど。
=end
Updated by matz (Yukihiro Matsumoto) almost 16 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r20798.
=end
Updated by okkez (okkez _) almost 16 years ago
=begin
okkez です。
2008/12/16 22:05 Yukihiro Matsumoto matz@ruby-lang.org:
まつもと ゆきひろです
In message "Re: [ruby-dev:37464] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 20:22:23 +0900, okkez okkez000@gmail.com writes:|以下のような実行結果になるからです。
|Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
|場合だけ true を返します。なるほど。コミットします。
ただ、minitestはRyan Davisがメンテナですから、今後は
ruby-coreにレポートしていただくのが確実だと思います。今回の
コミットがロストしなきゃいいけど。
次からは ruby-core にレポートするようにします。
--
okkez
okkez000@gmail.com
=end