2010年1月26日21:49 Tanaka Akira <akr / fsij.org>:
> 2010年1月26日20:39 Yusuke Endoh <redmine / ruby-lang.org>:
>>
>> r25428 が原因です。このコミットでは、
>>
>> - rdoc の文章が壊れています。
>>
>> - rdoc によると、「to_s が override されて *いない* ときは to_s を使う」
>>  という仕様だと思いますが、現在は to_s が override されて *いる* ときに
>>  to_s を使うようになっていると思います。
>
> override されてる to_s は各クラスに特化したわかりやすい to_s だろうから
> inspect としてはそっちを使うっていう話なんじゃないですか。
>
> それに、override されていないときに to_s を使うっていうなら、
> メソッド呼び出しを通して dynamic binding にする意味はありませんよね。


確かに。そういうことなら、rdoc の間違いですかね。


diff --git a/object.c b/object.c
index 73e5bd1..ab00efd 100644
--- a/object.c
+++ b/object.c
@@ -367,10 +367,8 @@ inspect_obj(VALUE obj, VALUE str, int recur)
  *     obj.inspect   => string
  *
  *  Returns a string containing a human-readable representation of
- *  <i>obj</i>. If not overridden and no instance variables, uses the
+ *  <i>obj</i>.  If <code>to_s<\code> is overridden, uses the
  *  <code>to_s</code> method to generate the string.
- *  <i>obj</i>.  If not overridden, uses the <code>to_s</code> method to
- *  generate the string.
  *
  *     [ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
  *     Time.new.inspect                 #=> "2008-03-08 19:43:39 +0900"


挙動は現状のままにするとして、

1. この挙動は 1.9.2 からの仕様変更 (1.9.1 はそのまま)
2. この挙動は 1.9 からの仕様変更 (1.9.1 にもバックポートする)
3. この挙動は 1.8/1.9 の仕様 (1.8.x にもバックポートする)

のどれとすべきでしょうか。rubyspec の修正依頼の内容に影響します。


(1.8 の rb_obj_inspect の rdoc と挙動があってないので、1.8 にも
なんらかの修正が必要だと思います。)

-- 
Yusuke ENDOH <mame / tsg.ne.jp>