From dadafd9cfabbea5555c404b339bbf44252ee7e6b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 10 Feb 2023 20:48:21 -0700 Subject: decode: decodeAny: Use rune types rather that char literals --- decode.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/decode.go b/decode.go index 07ca792..976cc6a 100644 --- a/decode.go +++ b/decode.go @@ -891,13 +891,12 @@ func (dec *Decoder) scanNumber(gTyp reflect.Type, out fastio.RuneWriter) *Decode } func (dec *Decoder) decodeAny() (any, *DecodeError) { - c, _, err := dec.readRune() + t, err := dec.peekRuneType() if err != nil { return nil, err } - dec.unreadRune() - switch c { - case '{': + switch t { + case jsonparse.RuneTypeObjectBeg: ret := make(map[string]any) typ := reflect.TypeOf(ret) var nameBuf strings.Builder @@ -922,7 +921,7 @@ func (dec *Decoder) decodeAny() (any, *DecodeError) { return nil, err } return ret, nil - case '[': + case jsonparse.RuneTypeArrayBeg: ret := []any{} typ := reflect.TypeOf(ret) if err := dec.decodeArray(typ, func() *DecodeError { @@ -940,13 +939,13 @@ func (dec *Decoder) decodeAny() (any, *DecodeError) { return nil, err } return ret, nil - case '"': + case jsonparse.RuneTypeStringBeg: var buf strings.Builder if err := dec.decodeString(nil, &buf); err != nil { return nil, err } return buf.String(), nil - case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + case jsonparse.RuneTypeNumberIntNeg, jsonparse.RuneTypeNumberIntZero, jsonparse.RuneTypeNumberIntDig: var buf strings.Builder if err := dec.scan(&buf); err != nil { return nil, err @@ -960,9 +959,9 @@ func (dec *Decoder) decodeAny() (any, *DecodeError) { return nil, dec.newTypeError("number "+buf.String(), float64Type, err) } return f64, nil - case 't', 'f': + case jsonparse.RuneTypeTrueT, jsonparse.RuneTypeFalseF: return dec.decodeBool(nil) - case 'n': + case jsonparse.RuneTypeNullN: return nil, dec.decodeNull() default: panic("should not happen") -- cgit v1.2.3-2-g168b