Project

General

Profile

Actions

Feature #13983

closed

Rational and Complex should be frozen

Added by Eregon (Benoit Daloze) over 6 years ago. Updated over 6 years ago.

Status:
Closed
Assignee:
-
Target version:
[ruby-core:83167]

Description

Since they basically are value types.
They also do not support #dup currently:

> 1r.dup
TypeError: can't copy Rational
from `initialize_copy'

> 1i.dup
TypeError: can't copy Complex
from `initialize_copy'

Changing their value can only be considered a semantic bug.

So, let's follow true/false/nil/Integer/Float and friends?

Not sure what #6538 was about but I think Marshal can just freeze after setting the values.
It's slightly incompatible if people do rational.instance_variable_set(:@foo, 1) or so,
but no more than on other now-frozen Numeric types and this kind of code seems highly undesirable.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #13985: Avoid exception for #dup/#clone on Rational and ComplexClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0