diff --git a/ChangeLog b/ChangeLog index eb5cbb2fcd..30599dac4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Apr 30 15:29:24 2016 Tanaka Akira + + * numeric.c (rb_int_uminus): {Fixnum,Bignum}#-@ is unified into + Integer. + + * bignum.c (rb_big_uminus): Don't define Bignum#-@. + Sat Apr 30 14:42:20 2016 Tanaka Akira * numeric.c (rb_int_idiv): {Fixnum,Bignum}#div is unified into diff --git a/bignum.c b/bignum.c index aedb7758c1..70aad22c1d 100644 --- a/bignum.c +++ b/bignum.c @@ -5529,13 +5529,6 @@ rb_big_eql(VALUE x, VALUE y) return Qtrue; } -/* - * call-seq: - * -big -> integer - * - * Unary minus (returns an integer whose value is 0-big) - */ - VALUE rb_big_uminus(VALUE x) { @@ -6890,7 +6883,6 @@ Init_Bignum(void) rb_cBignum = rb_define_class("Bignum", rb_cInteger); rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1); - rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0); rb_define_method(rb_cBignum, "+", rb_big_plus, 1); rb_define_method(rb_cBignum, "-", rb_big_minus, 1); rb_define_method(rb_cBignum, "*", rb_big_mul, 1); diff --git a/numeric.c b/numeric.c index 92545453d5..e772b01a34 100644 --- a/numeric.c +++ b/numeric.c @@ -3122,11 +3122,12 @@ int_ord(VALUE num) /* - * Document-method: Fixnum#-@ + * Document-method: Integer#-@ * call-seq: - * -fix -> integer + * -int -> integer * - * Negates +fix+, which may return a Bignum. + * Negates +int+. + * (returns an integer whose value is 0-int) */ static VALUE @@ -4834,7 +4835,7 @@ Init_Numeric(void) rb_cFixnum = rb_define_class("Fixnum", rb_cInteger); - rb_define_method(rb_cFixnum, "-@", fix_uminus, 0); + rb_define_method(rb_cFixnum, "-@", rb_int_uminus, 0); rb_define_method(rb_cFixnum, "+", fix_plus, 1); rb_define_method(rb_cFixnum, "-", fix_minus, 1); rb_define_method(rb_cFixnum, "*", fix_mul, 1);