1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[bigdecimal] Make BigDecimal#precs deprecated

https://github.com/ruby/bigdecimal/commit/7e80e6e145
https://github.com/ruby/bigdecimal/commit/0ed7846e8c
This commit is contained in:
Kenta Murata 2020-12-19 11:55:46 +09:00
parent ff9e40811c
commit 654f6fbf19
No known key found for this signature in database
GPG key ID: CEFE8AFB6081B062
4 changed files with 31 additions and 10 deletions

View file

@ -355,11 +355,12 @@ BigDecimal_double_fig(VALUE self)
/* call-seq:
* big_decimal.precs -> array
*
* Returns an Array of two Integer values.
* Returns an Array of two Integer values that represent platform-dependent
* internal storage properties.
*
* The first value is the current number of significant digits in the
* BigDecimal. The second value is the maximum number of significant digits
* for the BigDecimal.
* This method is deprecated and will be removed in the future.
* Instead, use BigDecimal#precision for obtaining the number of decimal
* digits.
*
* BigDecimal('5').precs #=> [9, 18]
*/
@ -371,6 +372,10 @@ BigDecimal_prec(VALUE self)
Real *p;
VALUE obj;
rb_category_warn(RB_WARN_CATEGORY_DEPRECATED,
"BigDecimal#precs is deprecated and will be removed in the future; "
"use BigDecimal#precision instead.");
GUARD_OBJ(p, GetVpValue(self, 1));
obj = rb_assoc_new(SIZET2NUM(p->Prec*VpBaseFig()),
SIZET2NUM(p->MaxPrec*VpBaseFig()));

View file

@ -159,6 +159,10 @@ rb_sym2str(VALUE sym)
# define vabs llabs
#endif
#if !defined(HAVE_RB_CATEGORY_WARN) || !defined(HAVE_CONST_RB_WARN_CATEGORY_DEPRECATED)
# define rb_category_warn(category, ...) rb_warn(__VA_ARGS__)
#endif
extern VALUE rb_cBigDecimal;
#if 0 || SIZEOF_BDIGITS >= 16

View file

@ -42,6 +42,8 @@ have_func("rb_complex_imag", "ruby.h")
have_func("rb_array_const_ptr", "ruby.h")
have_func("rb_sym2str", "ruby.h")
have_func("rb_opts_exception_p", "ruby.h")
have_func("rb_category_warn", "ruby.h")
have_const("RB_WARN_CATEGORY_DEPRECATED", "ruby.h")
if File.file?(File.expand_path('../lib/bigdecimal.rb', __FILE__))
bigdecimal_rb = "$(srcdir)/lib/bigdecimal.rb"

View file

@ -610,12 +610,22 @@ class TestBigDecimal < Test::Unit::TestCase
assert_operator(BigDecimal((2**100).to_s), :==, d)
end
def test_precs_deprecated
assert_warn(/BigDecimal#precs is deprecated and will be removed in the future/) do
BigDecimal("1").precs
end
end
def test_precs
a = BigDecimal("1").precs
assert_instance_of(Array, a)
assert_equal(2, a.size)
assert_kind_of(Integer, a[0])
assert_kind_of(Integer, a[1])
assert_separately(["-rbigdecimal"], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
$VERBOSE = nil
a = BigDecimal("1").precs
assert_instance_of(Array, a)
assert_equal(2, a.size)
assert_kind_of(Integer, a[0])
assert_kind_of(Integer, a[1])
end;
end
def test_hash
@ -764,7 +774,7 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(BigDecimal("0.1"), a, '[ruby-core:34318]')
a, b = BigDecimal("0.11111").coerce(1.quo(3))
assert_equal(BigDecimal("0." + "3"*a.precs[0]), a)
assert_equal(BigDecimal("0." + "3"*a.precision), a)
assert_nothing_raised(TypeError, '#7176') do
BigDecimal('1') + Rational(1)