Skip to content

Commit c35dcbe

Browse files
committed
[GR-20446] Fixed ENV.replace spec issues.
PullRequest: truffleruby/1252
2 parents affc920 + 6ab64f6 commit c35dcbe

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ Bug fixes:
6666
* Fixed parameter conversion to `String` in ENV methods.
6767
* Fixed deprecation warning when `ENV.index` is called.
6868
* Fixed issue with `ENV.each_key`.
69+
* Fixed `ENV.replace` implementation.
6970

7071
Compatibility:
7172

spec/tags/core/env/replace_tags.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/ruby/truffleruby/core/env.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,15 @@ def rehash
243243
end
244244

245245
def replace(other)
246-
clear
247-
other.each { |k, v| self[k] = v }
246+
return self if equal?(other)
247+
other = Truffle::Type.rb_convert_type(other, Hash, :to_hash)
248+
keys_to_delete = keys
249+
other.each do |k, v|
250+
self[k] = v
251+
keys_to_delete.delete(k)
252+
end
253+
keys_to_delete.each { |k| delete(k) }
254+
self
248255
end
249256

250257
def select(&blk)

0 commit comments

Comments
 (0)