fix(mapping): call fillSliceValue panic if the value is nil (#3839)

This commit is contained in:
Remember
2024-01-13 21:48:43 +08:00
committed by GitHub
parent 81d72b5010
commit 0441f84606
2 changed files with 17 additions and 0 deletions

View File

@@ -249,6 +249,9 @@ func (u *Unmarshaler) fillSliceFromString(fieldType reflect.Type, value reflect.
func (u *Unmarshaler) fillSliceValue(slice reflect.Value, index int,
baseKind reflect.Kind, value any, fullName string) error {
if value == nil {
return errUnsupportedType
}
ithVal := slice.Index(index)
switch v := value.(type) {
case fmt.Stringer:

View File

@@ -1329,6 +1329,20 @@ func TestUnmarshalInt64Slice(t *testing.T) {
}
}
func TestUnmarshalNullableSlice(t *testing.T) {
var v struct {
Ages []int64 `key:"ages"`
Slice []int8 `key:"slice"`
}
m := map[string]any{
"ages": []int64{1, 2},
"slice": `[null,2]`,
}
ast := assert.New(t)
ast.Equal(UnmarshalKey(m, &v), errUnsupportedType)
}
func TestUnmarshalIntSlice(t *testing.T) {
var v struct {
Ages []int `key:"ages"`