You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	fix issue #421
This commit is contained in:
		| @@ -2,6 +2,7 @@ package misc_tests | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"reflect" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/json-iterator/go" | ||||
| @@ -147,3 +148,26 @@ func Test_unmarshal_into_existing_value(t *testing.T) { | ||||
| 		"k": "v", | ||||
| 	}, m) | ||||
| } | ||||
|  | ||||
| // for issue421 | ||||
| func Test_unmarshal_anonymous_struct_invalid(t *testing.T) { | ||||
| 	should := require.New(t) | ||||
| 	t1 := struct { | ||||
| 		Field1 string | ||||
| 	}{} | ||||
|  | ||||
| 	cfg := jsoniter.ConfigCompatibleWithStandardLibrary | ||||
| 	err := cfg.UnmarshalFromString(`{"Field1":`, &t1) | ||||
| 	should.NotNil(err) | ||||
| 	should.NotContains(err.Error(), reflect.TypeOf(t1).String()) | ||||
|  | ||||
| 	type TestObject struct { | ||||
| 		Field1 struct { | ||||
| 			InnerField1 string | ||||
| 		} | ||||
| 	} | ||||
| 	t2 := TestObject{} | ||||
| 	err = cfg.UnmarshalFromString(`{"Field1":{"InnerField1"`, &t2) | ||||
| 	should.NotNil(err) | ||||
| 	should.NotContains(err.Error(), reflect.TypeOf(t2.Field1).String()) | ||||
| } | ||||
|   | ||||
| @@ -507,7 +507,7 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) | ||||
| 	for c = ','; c == ','; c = iter.nextToken() { | ||||
| 		decoder.decodeOneField(ptr, iter) | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	if c != '}' { | ||||
| @@ -588,7 +588,7 @@ func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -622,7 +622,7 @@ func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -660,7 +660,7 @@ func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -702,7 +702,7 @@ func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -748,7 +748,7 @@ func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -798,7 +798,7 @@ func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -852,7 +852,7 @@ func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -910,7 +910,7 @@ func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -972,7 +972,7 @@ func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
| @@ -1038,7 +1038,7 @@ func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	if iter.Error != nil && iter.Error != io.EOF { | ||||
| 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||
| 	} | ||||
| 	iter.decrementDepth() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user