diff options
author | Jeremy Evans <[email protected]> | 2019-09-23 16:03:15 -0700 |
---|---|---|
committer | Jeremy Evans <[email protected]> | 2020-03-22 09:30:07 -0700 |
commit | 4f7b435c955792af780fe9e94f98d3dde839e056 (patch) | |
tree | e6d3a5433aca7a48b79eba02056cc905dc3c88c4 /lib/set.rb | |
parent | 095e9f57af30fc286ba66557d86f080003ab6d5a (diff) |
Support obj.clone(freeze: true) for freezing clone
This freezes the clone even if the receiver is not frozen. It
is only for consistency with freeze: false not freezing the clone
even if the receiver is frozen.
Because Object#clone is now partially implemented in Ruby and
not fully implemented in C, freeze: nil must be supported to
provide the default behavior of only freezing the clone if the
receiver is frozen.
This requires modifying delegate and set, to set freeze: nil
instead of freeze: true as the keyword parameter for
initialize_clone. Those are the two libraries in stdlib that
override initialize_clone.
Implements [Feature #16175]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2969
Diffstat (limited to 'lib/set.rb')
-rw-r--r-- | lib/set.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/set.rb b/lib/set.rb index 684115539b..b8ab6ab172 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -137,7 +137,7 @@ class Set end # Clone internal hash. - def initialize_clone(orig, freeze: true) + def initialize_clone(orig, freeze: nil) super @hash = orig.instance_variable_get(:@hash).clone(freeze: freeze) end |