ruby-trunk-changes r56479 - r56485

今日は Complex が clamp というメソッドに対応していないのに respond_to? に true を返してしまう不具合の修正などがありました。

nobu: r56479 2016-10-24 10:19:46 +0900

Init_Complex() で Complex#clamp を undef するようにしています。 clamp は r55863 で Comparable モジュールに追加されたメソッドで指定された範囲内に丸める処理ですが Complex には <=> がないので呼べないとのこと。 Numeric に Comparable が include されているので Complex も Comparable ってことになってますが対応してないわけですね。ふーむ。 [ruby-core:77720] [Bug #12866]

svn: r56480 2016-10-24 10:19:47 +0900

version.h の日付更新。

nobu: r56481 2016-10-24 10:34:06 +0900

Complex のテストの assertion を assert_equal を assert_predicate や assert_not_respond_to などを使ってエラー時によりよいメッセージが出るようにしています。

nobu: r56482 2016-10-24 10:49:52 +0900

rb_undef_methods_from() という関数を追加して、第2引数の super の method table にあるメソッドを全て undef するという処理を実装しています。この流れだと Complex で Comparable のメソッド群を undef するためみたいですね。

nobu: r56483 2016-10-24 10:51:10 +0900

というわけで r56482 で追加した rb_undef_methods_from() を使って Complex から Comparable のメソッド群を全て undef するようにしています。 [ruby-core:77720] [Bug #12866]

nobu: r56484 2016-10-24 10:52:19 +0900

テスト用ライブラリ test/lib/test/unit.rb で並列テスト時の子プロセス worker で処理が終わった idle の状態のものも表示するようにしているようです。

nobu: r56485 2016-10-24 12:46:51 +0900

pipe などでブロックしている時に SIGINT で割り込んだ時にすぐに止まらなかった問題のテストで時間を測定している範囲が広かったのでもう少しシグナル送信から停止の検出までの間の時間だけを測るように絞っています。