This commit is contained in:
Faye Amacker 2024-05-27 21:21:12 -05:00
parent fdf5bd8378
commit b426c3e8c6
4 changed files with 12 additions and 9 deletions

View File

@ -1347,7 +1347,7 @@ func encodeStructToArray(e *bytes.Buffer, em *encMode, v reflect.Value) (err err
fv = v.Field(f.idx[0])
} else {
// Get embedded field value. No error is expected.
fv, _ = getFieldValue(v, f.idx, func(v reflect.Value) (reflect.Value, error) {
fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) {
// Write CBOR nil for null pointer to embedded struct
e.Write(cborNil)
return reflect.Value{}, nil
@ -1395,7 +1395,7 @@ func encodeStruct(e *bytes.Buffer, em *encMode, v reflect.Value) (err error) {
fv = v.Field(f.idx[0])
} else {
// Get embedded field value. No error is expected.
fv, _ = getFieldValue(v, f.idx, func(v reflect.Value) (reflect.Value, error) {
fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) {
// Skip null pointer to embedded struct
return reflect.Value{}, nil
})
@ -1870,7 +1870,7 @@ func isEmptyStruct(em *encMode, v reflect.Value) (bool, error) {
fv = v.Field(f.idx[0])
} else {
// Get embedded field value. No error is expected.
fv, _ = getFieldValue(v, f.idx, func(v reflect.Value) (reflect.Value, error) {
fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) {
// Skip null pointer to embedded struct
return reflect.Value{}, nil
})

View File

@ -328,7 +328,8 @@ func TestInvalidTypeMarshal(t *testing.T) {
}
for _, tc := range marshalErrorTests {
t.Run(tc.name, func(t *testing.T) {
b, err := Marshal(&tc.value)
v := tc.value
b, err := Marshal(&v)
if err == nil {
t.Errorf("Marshal(%v) didn't return an error, want error %q", tc.value, tc.wantErrorMsg)
} else if _, ok := err.(*UnsupportedTypeError); !ok {
@ -339,7 +340,8 @@ func TestInvalidTypeMarshal(t *testing.T) {
t.Errorf("Marshal(%v) = 0x%x, want nil", tc.value, b)
}
b, err = em.Marshal(&tc.value)
v = tc.value
b, err = em.Marshal(&v)
if err == nil {
t.Errorf("Marshal(%v) didn't return an error, want error %q", tc.value, tc.wantErrorMsg)
} else if _, ok := err.(*UnsupportedTypeError); !ok {

View File

@ -699,7 +699,8 @@ func TestEncoderError(t *testing.T) {
encoder := NewEncoder(&w)
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
err := encoder.Encode(&tc.value)
v := tc.value
err := encoder.Encode(&v)
if err == nil {
t.Errorf("Encode(%v) didn't return an error, want error %q", tc.value, tc.wantErrorMsg)
} else if _, ok := err.(*UnsupportedTypeError); !ok {

View File

@ -173,12 +173,12 @@ func appendFields(
continue
}
tagged := len(tag) > 0
tagged := tag != ""
// Parse field tag options
var tagFieldName string
var omitempty, keyasint bool
for j := 0; len(tag) > 0; j++ {
for j := 0; tag != ""; j++ {
var token string
idx := strings.IndexByte(tag, ',')
if idx == -1 {
@ -207,7 +207,7 @@ func appendFields(
copy(fIdx, idx)
fIdx[len(fIdx)-1] = i
if !f.Anonymous || ft.Kind() != reflect.Struct || len(tagFieldName) > 0 {
if !f.Anonymous || ft.Kind() != reflect.Struct || tagFieldName != "" {
flds = append(flds, &field{
name: fieldName,
idx: fIdx,