class Opal::Nodes::HashNode
def compile_merge
Each kwsplat overrides previosly defined keys
{ nested: 1}.merge(a: 1).merge(nested: 2)
should be compiled to
hash like { **{ nested: 1 }, a: 1, **{ nested: 2} }
Compiles hashes containing kwsplats inside.
def compile_merge result, seq = [], [] children.each do |child| if child.type == :kwsplat unless seq.empty? result << expr(s(:hash, *seq)) end result << expr(child) seq = [] else seq << child end end unless seq.empty? result << expr(s(:hash, *seq)) end result.each_with_index do |fragment, idx| if idx == 0 push fragment else push '.$merge(', fragment, ')' end end end