mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-26 12:13:43 +00:00
common/collections: Fix type checking in Append
The fix introduced in Hugo `0.49.1` had an unintended side-effect in the `Append` func used in both `append` and `.Scratch.Add`. This commit fixes that by loosen/fixing the type checking so concrete types can be appended to interface slices. Fixes #5303
This commit is contained in:
parent
3583dd6d71
commit
535755e4f8
2 changed files with 7 additions and 1 deletions
|
@ -59,7 +59,7 @@ func Append(to interface{}, from ...interface{}) (interface{}, error) {
|
|||
|
||||
for _, f := range from {
|
||||
fv := reflect.ValueOf(f)
|
||||
if tot != fv.Type() {
|
||||
if !fv.Type().AssignableTo(tot) {
|
||||
return nil, fmt.Errorf("append element type mismatch: expected %v, got %v", tot, fv.Type())
|
||||
}
|
||||
tov = reflect.Append(tov, fv)
|
||||
|
|
|
@ -43,7 +43,13 @@ func TestAppend(t *testing.T) {
|
|||
tstSlicers{&tstSlicer{"a"},
|
||||
&tstSlicer{"b"},
|
||||
&tstSlicer{"c"}}},
|
||||
{testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}},
|
||||
[]interface{}{&tstSlicerIn1{"c"}},
|
||||
testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}, &tstSlicerIn1{"c"}}},
|
||||
// Errors
|
||||
{testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}},
|
||||
[]interface{}{"c"},
|
||||
false},
|
||||
{"", []interface{}{[]string{"a", "b"}}, false},
|
||||
// No string concatenation.
|
||||
{"ab",
|
||||
|
|
Loading…
Reference in a new issue