diff --git a/lib/types.rb b/lib/types.rb index ae766cbc031c2a87c061bf2f202372f9655ab84b..5df81082bebef53549134173af426b82de49e2a1 100644 --- a/lib/types.rb +++ b/lib/types.rb @@ -333,22 +333,19 @@ module Dhallish # TODO: .val weg! def mergeRecordsRecursively(a, b) - restype = mergeRecordTypes(a.type, b.type) - - merged = a.val.clone - b.val.each { |key, val| + merged = a.clone + b.each { |key, val| if merged.key? key - if val.type.is_a? Types::Record and merged[key].type.is_a? Types::Record + if val.is_a? Hash and merged[key].is_a? Hash merged[key] = mergeRecordsRecursively(merged[key], val) else - raise DhallError, "key `#{key}` apeares in left and right side of `/\\`" + raise DhallError, "key `#{key}` apeares in left and right side of `/\\` (should not happen becouse of static type checks)" end else merged[key] = val end } - - Value.new merged, restype + merged end module_function :mergeRecordsRecursively @@ -360,12 +357,10 @@ module Dhallish end module_function :mergeRecordTypesPrefereRight - # TODO: .val weg! def mergeRecordsPrefereRight(a, b) - mergedType = mergeRecordTypesPrefereRight(a.type, b.type) - mergedVals = a.val.clone - b.val.each { |key, val| mergedVals[key] = val } - Value.new mergedVals, mergedType + mergedVals = a.clone + b.each { |key, val| mergedVals[key] = val } + mergedVals end module_function :mergeRecordsPrefereRight end