ruby-trunk-changes r57983 - r57991

今日は主に Rational の文字列からの parse (String#to_r や Rational()) での挙動をリテラルの記法との一貫性を持たせる変更などがありました。

nobu: r57983 2017-03-16 09:43:07 +0900

String#to_r のテストを専用の assertion メソッド assert_valid_rational、assert_invalid_rational を定義してこれを使うようにリファクタリングしています。

svn: r57984 2017-03-16 09:43:08 +0900

version.h の日付更新。

nobu: r57985 2017-03-16 10:53:52 +0900

"1/0" のようなゼロ除算の文字列を to_r や Rational() で変換しようとした時の ZeroDivisionError 例外が発生することを確認するテストケースを追加しています。

nobu: r57986 2017-03-16 11:02:47 +0900

r57983 でリファクタリングした Rational のテストで重複していた assertion を削除しています。

nobu: r57987 2017-03-16 12:05:34 +0900

String#to_r での Rational への変換で "_" を含む時のエラーになるケースのテストを追加しています。 [ruby-core:80098] [Bug #13105]

nobu: r57988 2017-03-16 12:21:12 +0900

rb_cstr_parse_inum() から符号、アンダースコア、0x や 0b のような prefix を許容するかどうかなどを指定する flags を受けとる関数 rb_int_parse_cstr() を切り出して再利用できるようにしています。

nobu: r57989 2017-03-16 12:32:16 +0900

r57988 で切り出した rb_int_parse_cstr() をさっそく利用して String#to_r の parse でアンダースコアを許容する整数の parse を共通の関数を使って処理するようにしています。 [ruby-core:80098] [Bug #13105]
多分こうするんだろうなぁと思ったけど結構大きな変更になってますね。

nobu: r57990 2017-03-16 12:35:29 +0900

r57989 の続きで parse_rat() で分母の parse に rb_int_parse_cstr() でなく parse_num() を呼ぶようにして浮動小数点数リテラルを分母に書く記法も許容するようにしています。 [ruby-core:79104] [Bug #13134]

nobu: r57991 2017-03-16 15:51:24 +0900

r57989 で rational.c の read_num() に追加した変数 n が未初期化のまま使われる可能性があったので ZERO で初期化するようにしています。