Skip to content

Commit 6ab64f6

Browse files
committed
Fixed ENV.replace spec issues.
1 parent 9b8b857 commit 6ab64f6

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
@@ -65,6 +65,7 @@ Bug fixes:
6565
* Removed "shadowing outer local variable" warning.
6666
* Fixed parameter conversion to `String` in ENV methods.
6767
* Fixed deprecation warning when `ENV.index` is called.
68+
* Fixed `ENV.replace` implementation.
6869

6970
Compatibility:
7071

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
@@ -239,8 +239,15 @@ def rehash
239239
end
240240

241241
def replace(other)
242-
clear
243-
other.each { |k, v| self[k] = v }
242+
return self if equal?(other)
243+
other = Truffle::Type.rb_convert_type(other, Hash, :to_hash)
244+
keys_to_delete = keys
245+
other.each do |k, v|
246+
self[k] = v
247+
keys_to_delete.delete(k)
248+
end
249+
keys_to_delete.each { |k| delete(k) }
250+
self
244251
end
245252

246253
def select(&blk)

0 commit comments

Comments
 (0)