mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
freeze Complex and Rational
* complex.c (nucomp_s_new_internal, nucomp_loader): Complex instances are always frozen now. [Feature #13983] * rational.c (nurat_s_new_internal, nurat_loader): Rational instances are always frozen now. [Feature #13983] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8b501f6d7f
commit
42c98194b3
4 changed files with 4 additions and 8 deletions
|
@ -298,6 +298,7 @@ nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)
|
|||
|
||||
RCOMPLEX_SET_REAL(obj, real);
|
||||
RCOMPLEX_SET_IMAG(obj, imag);
|
||||
OBJ_FREEZE_RAW(obj);
|
||||
|
||||
return (VALUE)obj;
|
||||
}
|
||||
|
@ -1406,6 +1407,7 @@ nucomp_loader(VALUE self, VALUE a)
|
|||
|
||||
RCOMPLEX_SET_REAL(dat, rb_ivar_get(a, id_i_real));
|
||||
RCOMPLEX_SET_IMAG(dat, rb_ivar_get(a, id_i_imag));
|
||||
OBJ_FREEZE_RAW(self);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
|
@ -410,6 +410,7 @@ nurat_s_new_internal(VALUE klass, VALUE num, VALUE den)
|
|||
|
||||
RRATIONAL_SET_NUM(obj, num);
|
||||
RRATIONAL_SET_DEN(obj, den);
|
||||
OBJ_FREEZE_RAW(obj);
|
||||
|
||||
return (VALUE)obj;
|
||||
}
|
||||
|
@ -1855,6 +1856,7 @@ nurat_loader(VALUE self, VALUE a)
|
|||
nurat_canonicalize(&num, &den);
|
||||
RRATIONAL_SET_NUM(dat, num);
|
||||
RRATIONAL_SET_DEN(dat, den);
|
||||
OBJ_FREEZE_RAW(self);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,6 @@ class Complex_Test < Test::Unit::TestCase
|
|||
|
||||
def test_freeze
|
||||
c = Complex(1)
|
||||
c.freeze
|
||||
assert_predicate(c, :frozen?)
|
||||
assert_instance_of(String, c.to_s)
|
||||
end
|
||||
|
@ -534,12 +533,10 @@ class Complex_Test < Test::Unit::TestCase
|
|||
|
||||
def test_marshal
|
||||
c = Complex(1,2)
|
||||
c.instance_eval{@ivar = 9}
|
||||
|
||||
s = Marshal.dump(c)
|
||||
c2 = Marshal.load(s)
|
||||
assert_equal(c, c2)
|
||||
assert_equal(9, c2.instance_variable_get(:@ivar))
|
||||
assert_instance_of(Complex, c2)
|
||||
|
||||
c = Complex(Rational(1,2),Rational(2,3))
|
||||
|
@ -551,7 +548,6 @@ class Complex_Test < Test::Unit::TestCase
|
|||
|
||||
bug3656 = '[ruby-core:31622]'
|
||||
c = Complex(1,2)
|
||||
c.freeze
|
||||
assert_predicate(c, :frozen?)
|
||||
result = c.marshal_load([2,3]) rescue :fail
|
||||
assert_equal(:fail, result, bug3656)
|
||||
|
|
|
@ -59,7 +59,6 @@ class Rational_Test < Test::Unit::TestCase
|
|||
|
||||
def test_freeze
|
||||
c = Rational(1)
|
||||
c.freeze
|
||||
assert_predicate(c, :frozen?)
|
||||
assert_instance_of(String, c.to_s)
|
||||
end
|
||||
|
@ -639,12 +638,10 @@ class Rational_Test < Test::Unit::TestCase
|
|||
|
||||
def test_marshal
|
||||
c = Rational(1,2)
|
||||
c.instance_eval{@ivar = 9}
|
||||
|
||||
s = Marshal.dump(c)
|
||||
c2 = Marshal.load(s)
|
||||
assert_equal(c, c2)
|
||||
assert_equal(9, c2.instance_variable_get(:@ivar))
|
||||
assert_instance_of(Rational, c2)
|
||||
|
||||
assert_raise(TypeError){
|
||||
|
@ -657,7 +654,6 @@ class Rational_Test < Test::Unit::TestCase
|
|||
|
||||
bug3656 = '[ruby-core:31622]'
|
||||
c = Rational(1,2)
|
||||
c.freeze
|
||||
assert_predicate(c, :frozen?)
|
||||
result = c.marshal_load([2,3]) rescue :fail
|
||||
assert_equal(:fail, result, bug3656)
|
||||
|
|
Loading…
Reference in a new issue