diff options
author | nagachika <nagachika@ruby-lang.org> | 2021-04-15 10:11:19 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-04-15 10:25:30 +0900 |
commit | 84d9a9afc0b49d095541acb9832f8b12fb506e19 (patch) | |
tree | 1f6b27559c103dfffbe0977f0fe014e20ac07537 /spec | |
parent | d5a34e1b142eccc54971494be2243a0c6ac01d94 (diff) |
merge revision(s) 31e0382723bfb35cffe3ca485dd0577668cafa07,5e5fb72f99701dc27c66ab148471893f14e6d6f0,fb6ebe55d91187d9635e0183d47dbf38e95b1141,522d4cd32f7727886f4fcbc28ed29c08d361ee20: [Backport #17735]
Keep non evaluated keys in `Hash#transform_keys!` [Bug #17735]
---
hash.c | 6 +++++-
spec/ruby/core/hash/transform_keys_spec.rb | 12 +++++++++++-
test/ruby/test_hash.rb | 8 ++++++++
3 files changed, 24 insertions(+), 2 deletions(-)
Clear an intermediate hash [Bug #17735]
---
hash.c | 1 +
1 file changed, 1 insertion(+)
Hide an intermediate array
---
hash.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
Force recycle intermediate collection in Hash#transform_keys! [Bug
#17735]
* Force recycle intermediate hash
* Force recycle intermediate array too
https://github.com/ruby/ruby/pull/4329#issuecomment-808840718
---
hash.c | 2 ++
1 file changed, 2 insertions(+)
Diffstat (limited to 'spec')
-rw-r--r-- | spec/ruby/core/hash/transform_keys_spec.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/spec/ruby/core/hash/transform_keys_spec.rb b/spec/ruby/core/hash/transform_keys_spec.rb index 2c5d4124e0..55aec395a3 100644 --- a/spec/ruby/core/hash/transform_keys_spec.rb +++ b/spec/ruby/core/hash/transform_keys_spec.rb @@ -84,7 +84,7 @@ describe "Hash#transform_keys!" do end end - ruby_version_is "2.5.1" do + ruby_version_is "2.5.1"..."3.0" do it "returns the processed keys if we broke from the block" do @hash.transform_keys! do |v| break if v == :c @@ -94,6 +94,16 @@ describe "Hash#transform_keys!" do end end + ruby_version_is "3.0" do + it "returns the processed keys and non evaluated keys if we broke from the block" do + @hash.transform_keys! do |v| + break if v == :c + v.succ + end + @hash.should == { b: 1, c: 2, d: 4 } + end + end + it "keeps later pair if new keys conflict" do @hash.transform_keys! { |_| :a }.should == { a: 4 } end |