ruby-trunk-changes r63134 - r63138

今日は Object#method_missing を再定義した時の不具合修正などがありました。

nobu: r63134 2018-04-12 12:40:16 +0900

よくわかりませんが Marshal.dump, Marshal.load で例外オブジェクトを dump/load した時のテストで使うために NoMethodError 例外を発生させるためにメソッドを呼ぶのを receiver 指定せずに呼んでたのを Object のインスタンスを作ってそれに対して呼ぶようにしています。TestCase にはモジュールが include されているかもしれないので、とのこと。

svn: r63135 2018-04-12 12:40:17 +0900

version.h の日付更新。

nobu: r63136 2018-04-12 12:48:48 +0900

例外オブジェクトに内部的なインスタンス変数に message や backtrace のためのオブジェクトをセットする処理を exc_initialize() から exc_init() という関数に切り出して、NameError の初期化の実装 name_err_initialize() から利用するようにしています。NameError や NoMethodError はキーワード引数を追加したため実装が分離していて、NoMethodError の initialize が super を呼ばなくなっていたのを修正しています。 [ruby-dev:50522] [Bug #14670]

nobu: r63137 2018-04-12 18:34:54 +0900

NameError では receiver という名前の(@ で始まらないので内部的にしか使えない)インスタンス変数にセットしていましたが、DRb が(Marshal.dump した結果の関係だと思います)これに影響を受けるそうなので、名前のない内部的な ID を rb_make_internal_id() で作ってこれを使うようにしています。 id_receiver を使ってたのは r63136 の前からなのですが、r63136 で表出したみたいです。

nobu: r63138 2018-04-12 21:01:51 +0900

インデントの不一致を警告する機能のテストで case 文の end の対応のチェックも追加しています。