|
@@ -9,6 +9,7 @@
|
|
package mergo
|
|
package mergo
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "fmt"
|
|
"reflect"
|
|
"reflect"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -127,6 +128,9 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co
|
|
if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice {
|
|
if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice {
|
|
dstSlice = srcSlice
|
|
dstSlice = srcSlice
|
|
} else if config.AppendSlice {
|
|
} else if config.AppendSlice {
|
|
|
|
+ if srcSlice.Type() != dstSlice.Type() {
|
|
|
|
+ return fmt.Errorf("cannot append two slice with different type (%s, %s)", srcSlice.Type(), dstSlice.Type())
|
|
|
|
+ }
|
|
dstSlice = reflect.AppendSlice(dstSlice, srcSlice)
|
|
dstSlice = reflect.AppendSlice(dstSlice, srcSlice)
|
|
}
|
|
}
|
|
dst.SetMapIndex(key, dstSlice)
|
|
dst.SetMapIndex(key, dstSlice)
|
|
@@ -150,6 +154,9 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co
|
|
if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice {
|
|
if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice {
|
|
dst.Set(src)
|
|
dst.Set(src)
|
|
} else if config.AppendSlice {
|
|
} else if config.AppendSlice {
|
|
|
|
+ if src.Type() != dst.Type() {
|
|
|
|
+ return fmt.Errorf("cannot append two slice with different type (%s, %s)", src.Type(), dst.Type())
|
|
|
|
+ }
|
|
dst.Set(reflect.AppendSlice(dst, src))
|
|
dst.Set(reflect.AppendSlice(dst, src))
|
|
}
|
|
}
|
|
case reflect.Ptr:
|
|
case reflect.Ptr:
|