Skip to content

Commit 5337373

Browse files
committed
Deprecate BigDecimal.new
1 parent 16738ad commit 5337373

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

ext/bigdecimal/bigdecimal.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2594,6 +2594,13 @@ static Real *BigDecimal_new(int argc, VALUE *argv);
25942594
* ArgumentError:: If the +initial+ is a Float or Rational, and the +digits+
25952595
* value is omitted, this exception is raised.
25962596
*/
2597+
static VALUE
2598+
BigDecimal_s_new(int argc, VALUE *argv, VALUE self)
2599+
{
2600+
rb_warning("BigDecimal.new is deprecated");
2601+
return rb_call_super(argc, argv);
2602+
}
2603+
25972604
static VALUE
25982605
BigDecimal_initialize(int argc, VALUE *argv, VALUE self)
25992606
{
@@ -3279,6 +3286,7 @@ Init_bigdecimal(void)
32793286
rb_define_global_function("BigDecimal", BigDecimal_global_new, -1);
32803287

32813288
/* Class methods */
3289+
rb_define_singleton_method(rb_cBigDecimal, "new", BigDecimal_s_new, -1);
32823290
rb_define_singleton_method(rb_cBigDecimal, "mode", BigDecimal_mode, -1);
32833291
rb_define_singleton_method(rb_cBigDecimal, "limit", BigDecimal_limit, -1);
32843292
rb_define_singleton_method(rb_cBigDecimal, "double_fig", BigDecimal_double_fig, 0);

test/test_bigdecimal.rb

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,20 +133,22 @@ def test_new
133133
end
134134

135135
def test_new
136-
assert_equal(1, BigDecimal.new("1"))
137-
assert_equal(1, BigDecimal.new("1", 1))
138-
assert_equal(1, BigDecimal.new(" 1 "))
139-
assert_equal(111, BigDecimal.new("1_1_1_"))
140-
assert_equal(10**(-1), BigDecimal.new("1E-1"), '#4825')
136+
assert_warning(/BigDecimal.new is deprecated/) do
137+
assert_equal(1, BigDecimal.new("1"))
138+
assert_equal(1, BigDecimal.new("1", 1))
139+
assert_equal(1, BigDecimal.new(" 1 "))
140+
assert_equal(111, BigDecimal.new("1_1_1_"))
141+
assert_equal(10**(-1), BigDecimal.new("1E-1"), '#4825')
141142

142-
assert_raise(ArgumentError, /"_1_1_1"/) { BigDecimal.new("_1_1_1") }
143+
assert_raise(ArgumentError, /"_1_1_1"/) { BigDecimal.new("_1_1_1") }
143144

144-
BigDecimal.mode(BigDecimal::EXCEPTION_OVERFLOW, false)
145-
BigDecimal.mode(BigDecimal::EXCEPTION_NaN, false)
146-
assert_positive_infinite(BigDecimal.new("Infinity"))
147-
assert_negative_infinite(BigDecimal.new("-Infinity"))
148-
assert_nan(BigDecimal.new("NaN"))
149-
assert_positive_infinite(BigDecimal.new("1E1111111111111111111"))
145+
BigDecimal.mode(BigDecimal::EXCEPTION_OVERFLOW, false)
146+
BigDecimal.mode(BigDecimal::EXCEPTION_NaN, false)
147+
assert_positive_infinite(BigDecimal.new("Infinity"))
148+
assert_negative_infinite(BigDecimal.new("-Infinity"))
149+
assert_nan(BigDecimal.new("NaN"))
150+
assert_positive_infinite(BigDecimal.new("1E1111111111111111111"))
151+
end
150152
end
151153

152154
def test_new_with_integer

0 commit comments

Comments
 (0)