From d525a9ad920c6678f1e193d121be677936289667 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 10 Feb 2023 19:11:54 -0700 Subject: decode: Remove now-superfluous recover blocks --- decode.go | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/decode.go b/decode.go index 9ec706f..07ca792 100644 --- a/decode.go +++ b/decode.go @@ -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 -- cgit v1.2.3-54-g00ecf