This commit is contained in:
AllenX2018
2020-05-08 18:43:08 +08:00
parent 9ba7363552
commit 1479e10663
2 changed files with 43 additions and 1 deletions
+2 -1
View File
@@ -822,7 +822,8 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V
if !mtypef.Anonymous {
tmpTval = nil
}
v, err := d.valueFromTree(mtypef.Type, tmpTval, nil)
fval := mval.Field(i)
v, err := d.valueFromTree(mtypef.Type, tmpTval, &fval)
if err != nil {
return v, err
}
+41
View File
@@ -3807,3 +3807,44 @@ func TestTextUnmarshalError(t *testing.T) {
t.Fatalf("expected err, got none")
}
}
// issue406
func TestPreserveNotEmptyField(t *testing.T) {
toml := []byte(`Field1 = "ccc"`)
type Inner struct {
InnerField1 string
InnerField2 int
}
type TestStruct struct {
Field1 string
Field2 int
Field3 Inner
}
actual := TestStruct{
"aaa",
100,
Inner{
"bbb",
200,
},
}
expected := TestStruct{
"ccc",
100,
Inner{
"bbb",
200,
},
}
err := Unmarshal(toml, &actual)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(actual, expected) {
t.Errorf("Bad unmarshal: expected %+v, got %+v", expected, actual)
}
}