summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-04-15 10:11:19 +0900
committernagachika <nagachika@ruby-lang.org>2021-04-15 10:25:30 +0900
commit84d9a9afc0b49d095541acb9832f8b12fb506e19 (patch)
tree1f6b27559c103dfffbe0977f0fe014e20ac07537 /spec
parentd5a34e1b142eccc54971494be2243a0c6ac01d94 (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.rb12
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