diff options
-rw-r--r-- | decode.go | 38 |
1 files changed, 3 insertions, 35 deletions
@@ -252,8 +252,6 @@ func (dec *Decoder) Decode(ptr any) (err error) { // io helpers ////////////////////////////////////////////////////////////////////////////////////// -type decodeError DecodeError - func (dec *Decoder) newTypeError(jTyp string, gTyp reflect.Type, err error) *DecodeError { return &DecodeError{ Field: dec.structStackStr(), @@ -390,17 +388,7 @@ var kind2bits = map[reflect.Kind]int{ reflect.Float64: 64, } -func (dec *Decoder) decode(val reflect.Value, nullOK bool) (_err *DecodeError) { - defer func() { - if r := recover(); r != nil { - if de, ok := r.(decodeError); ok { - pub := DecodeError(de) - _err = &pub - } else { - panic(r) - } - } - }() +func (dec *Decoder) decode(val reflect.Value, nullOK bool) *DecodeError { dec.posStackPush() defer dec.posStackPop() typ := val.Type() @@ -989,17 +977,7 @@ func (dec *Decoder) decodeAny() (any, *DecodeError) { // Outside of implementing Decodable.DecodeJSON methods, callers // should instead simply use NewDecoder(r).Decode(&val) rather than // attempting to call DecodeObject directly. -func DecodeObject(r io.RuneScanner, decodeKey, decodeVal func(io.RuneScanner) error) (err error) { - defer func() { - if r := recover(); r != nil { - if de, ok := r.(decodeError); ok { - pub := DecodeError(de) - err = &pub - } else { - panic(r) - } - } - }() +func DecodeObject(r io.RuneScanner, decodeKey, decodeVal func(io.RuneScanner) error) error { var dec *Decoder if dr, ok := r.(*decRuneScanner); ok { dec = dr.dec @@ -1099,17 +1077,7 @@ func (dec *Decoder) decodeObject(gTyp reflect.Type, decodeKey, decodeVal func() // Outside of implementing Decodable.DecodeJSON methods, callers // should instead simply use NewDecoder(r).Decode(&val) rather than // attempting to call DecodeArray directly. -func DecodeArray(r io.RuneScanner, decodeMember func(r io.RuneScanner) error) (err error) { - defer func() { - if r := recover(); r != nil { - if de, ok := r.(decodeError); ok { - pub := DecodeError(de) - err = &pub - } else { - panic(r) - } - } - }() +func DecodeArray(r io.RuneScanner, decodeMember func(r io.RuneScanner) error) error { var dec *Decoder if dr, ok := r.(*decRuneScanner); ok { dec = dr.dec |