aboutsummaryrefslogtreecommitdiffstats
path: root/lib/delegate.rb
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-23 16:03:15 -0700
committerJeremy Evans <code@jeremyevans.net>2020-03-22 09:30:07 -0700
commit4f7b435c955792af780fe9e94f98d3dde839e056 (patch)
treee6d3a5433aca7a48b79eba02056cc905dc3c88c4 /lib/delegate.rb
parent095e9f57af30fc286ba66557d86f080003ab6d5a (diff)
downloadruby-4f7b435c955792af780fe9e94f98d3dde839e056.tar.gz
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]
Diffstat (limited to 'lib/delegate.rb')
-rw-r--r--lib/delegate.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb
index e3b3488c16..c540c2ec77 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -218,7 +218,7 @@ class Delegator < BasicObject
end
end
- def initialize_clone(obj, freeze: true) # :nodoc:
+ def initialize_clone(obj, freeze: nil) # :nodoc:
self.__setobj__(obj.__getobj__.clone(freeze: freeze))
end
def initialize_dup(obj) # :nodoc: