summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-31 10:14:42 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-31 10:14:42 +0000
commit88a4961cb2bf52186d188bb8feaed9465c8acddc (patch)
tree122bbc971d37cb761b214645e2e0b9b4414eab6f
parentb2acbb2c67e8d9dc5eaf4823f5e547c57832c443 (diff)
* numeric.c (num_quo): should convert its operand to Rational.
* rational.c (string_to_r_strict): should raise TypeError. * bignum.c (Init_Bignum): should not redefine Bignum#div. Numeric#div will do. [ruby-dev:34066] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--bignum.c4
-rw-r--r--numeric.c4
-rw-r--r--rational.c2
-rw-r--r--test/ruby/test_bignum.rb7
5 files changed, 15 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ae4cba95a..711fbe040f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,15 @@ Mon Mar 31 18:42:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in: check for ssize_t. [ruby-dev:34184]
+Mon Mar 31 14:45:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_quo): should convert its operand to Rational.
+
+ * rational.c (string_to_r_strict): should raise TypeError.
+
+ * bignum.c (Init_Bignum): should not redefine Bignum#div.
+ Numeric#div will do. [ruby-dev:34066]
+
Mon Mar 31 04:05:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
* io.c (io_getc): set coderange while getting characters.
diff --git a/bignum.c b/bignum.c
index 72bb917cf7..1797c0e663 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1737,7 +1737,6 @@ bigdivmod(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
/*
* call-seq:
* big / other => Numeric
- * big.div(other) => Numeric
*
* Divides big by other, returning the result.
*/
@@ -1903,7 +1902,7 @@ static VALUE big_shift(VALUE x, int n)
static VALUE
rb_big_quo(VALUE x, VALUE y)
{
- return rb_funcall(rb_rational_raw1(x), '/', 1, y);
+ return rb_funcall(rb_rational_raw1(x), '/', 1, rb_Rational1(y));
}
static VALUE
@@ -2598,7 +2597,6 @@ Init_Bignum(void)
rb_define_method(rb_cBignum, "*", rb_big_mul, 1);
rb_define_method(rb_cBignum, "/", rb_big_div, 1);
rb_define_method(rb_cBignum, "%", rb_big_modulo, 1);
- rb_define_method(rb_cBignum, "div", rb_big_div, 1);
rb_define_method(rb_cBignum, "divmod", rb_big_divmod, 1);
rb_define_method(rb_cBignum, "modulo", rb_big_modulo, 1);
rb_define_method(rb_cBignum, "remainder", rb_big_remainder, 1);
diff --git a/numeric.c b/numeric.c
index fc2310b94d..85565bf9b8 100644
--- a/numeric.c
+++ b/numeric.c
@@ -257,7 +257,7 @@ num_uminus(VALUE num)
static VALUE
num_quo(VALUE x, VALUE y)
{
- return rb_funcall(x, '/', 1, y);
+ return rb_funcall(x, '/', 1, rb_Rational1(y));
}
@@ -275,7 +275,7 @@ static VALUE num_floor(VALUE num);
static VALUE
num_div(VALUE x, VALUE y)
{
- return num_floor(rb_funcall(x, '/', 1, y));
+ return rb_funcall(rb_funcall(x, '/', 1, y), rb_intern("floor"), 0, 0);
}
diff --git a/rational.c b/rational.c
index 7165e93232..90b227faf5 100644
--- a/rational.c
+++ b/rational.c
@@ -1432,7 +1432,7 @@ string_to_r_strict(VALUE self)
VALUE a = string_to_r_internal(self);
if (NIL_P(RARRAY_PTR(a)[0]) || RSTRING_LEN(RARRAY_PTR(a)[1]) > 0) {
VALUE s = f_inspect(self);
- rb_raise(rb_eArgError, "invalid value for Rational: %s",
+ rb_raise(rb_eTypeError, "invalid value for Rational: %s",
StringValuePtr(s));
}
return RARRAY_PTR(a)[0];
diff --git a/test/ruby/test_bignum.rb b/test/ruby/test_bignum.rb
index f9ffd477d3..85ee5eea5f 100644
--- a/test/ruby/test_bignum.rb
+++ b/test/ruby/test_bignum.rb
@@ -262,17 +262,14 @@ class TestBignum < Test::Unit::TestCase
assert_equal(T32.to_f, T32.quo(1.0))
assert_equal(T32.to_f, T32.quo(T_ONE))
- ### rational changes the behavior of Bignum#quo
- #assert_raise(TypeError) { T32.quo("foo") }
- assert_raise(TypeError, NoMethodError) { T32.quo("foo") }
+ assert_raise(TypeError) { T32.quo("foo") }
assert_equal(1024**1024, (1024**1024).quo(1))
assert_equal(1024**1024, (1024**1024).quo(1.0))
assert_equal(1024**1024*2, (1024**1024*2).quo(1))
inf = 1 / 0.0; nan = inf / inf
- ### rational changes the behavior of Bignum#quo
- #assert_raise(FloatDomainError) { (1024**1024*2).quo(nan) }
+ assert_raise(FloatDomainError) { (1024**1024*2).quo(nan) }
end
def test_pow