shithub: hugo

Download patch

ref: 1b785a7a6d3c264e39e4976c59b618c0ac1ba5f9
parent: d20ca3700512d661247b44d953515b9455e57ed6
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Wed Dec 18 16:31:34 EST 2019

tpl/collections: Fix merge vs Params

Fixes #6633

--- a/tpl/collections/merge.go
+++ b/tpl/collections/merge.go
@@ -40,7 +40,7 @@
 		return nil, errors.Errorf("source must be a map, got %T", src)
 	}
 
-	if vsrc.Type() != vdst.Type() {
+	if vsrc.Type().Key() != vdst.Type().Key() {
 		return nil, errors.Errorf("incompatible map types, got %T to %T", src, dst)
 	}
 
--- a/tpl/collections/merge_test.go
+++ b/tpl/collections/merge_test.go
@@ -21,6 +21,8 @@
 	"strings"
 	"testing"
 
+	"github.com/gohugoio/hugo/common/maps"
+
 	"github.com/gohugoio/hugo/parser"
 
 	"github.com/gohugoio/hugo/parser/metadecoders"
@@ -57,6 +59,18 @@
 			map[string]interface{}{"a": 1, "b": map[string]interface{}{"d": 1, "e": 2}},
 			map[string]interface{}{"a": 42, "c": 3, "b": map[string]interface{}{"d": 55, "e": 66, "f": 3}},
 			map[string]interface{}{"a": 1, "b": map[string]interface{}{"d": 1, "e": 2, "f": 3}, "c": 3}, false},
+		{
+			// https://github.com/gohugoio/hugo/issues/6633
+			"params dst",
+			maps.Params{"a": 1, "b": 2},
+			map[string]interface{}{"a": 42, "c": 3},
+			maps.Params{"a": int(1), "b": int(2), "c": int(3)}, false},
+		{
+			// https://github.com/gohugoio/hugo/issues/6633
+			"params src",
+			map[string]interface{}{"a": 1, "c": 2},
+			maps.Params{"a": 42, "c": 3},
+			map[string]interface{}{"a": int(1), "c": int(2)}, false},
 		{"src nil", simpleMap, nil, simpleMap, false},
 		// Error cases.
 		{"dst not a map", "not a map", nil, nil, true},