summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2025-04-14 09:43:56 +0200
committerLibravatar GitHub <noreply@github.com>2025-04-14 09:43:56 +0200
commit51b9ef5c346f333e558eca38fd954464322f3b7d (patch)
treebf5cd0de887a27c1afc66345b1a464921d96e503 /vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go
parent[docs] Remind the user that password resets don't work without restarting. (#... (diff)
downloadgotosocial-51b9ef5c346f333e558eca38fd954464322f3b7d.tar.xz
[chore]: Bump github.com/gin-contrib/gzip from 1.2.2 to 1.2.3 (#4000)
Bumps [github.com/gin-contrib/gzip](https://github.com/gin-contrib/gzip) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/gin-contrib/gzip/releases) - [Changelog](https://github.com/gin-contrib/gzip/blob/master/.goreleaser.yaml) - [Commits](https://github.com/gin-contrib/gzip/compare/v1.2.2...v1.2.3) --- updated-dependencies: - dependency-name: github.com/gin-contrib/gzip dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go23
1 files changed, 17 insertions, 6 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go
index 7d9d60a01..b3ca7a4ee 100644
--- a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go
+++ b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/compiler.go
@@ -1,7 +1,6 @@
package optdec
import (
- "encoding/json"
"fmt"
"reflect"
@@ -169,7 +168,9 @@ func (c *compiler) compileBasic(vt reflect.Type) decFunc {
case reflect.Struct:
return c.compileStruct(vt)
default:
- panic(&json.UnmarshalTypeError{Type: vt})
+ return &unsupportedTypeDecoder{
+ typ: rt.UnpackType(vt),
+ }
}
}
@@ -263,7 +264,7 @@ func (c *compiler) compileSlice(vt reflect.Type) decFunc {
if et.IsUint64() {
return &sliceU64Decoder{}
}
- if et.Kind() == reflect.String {
+ if et.Kind() == reflect.String && et != rt.JsonNumberType {
return &sliceStringDecoder{}
}
@@ -343,7 +344,7 @@ func (c *compiler) compileMap(vt reflect.Type) decFunc {
// Some common integer map later
mt := rt.MapType(rt.UnpackType(vt))
- if mt.Key.Kind() == reflect.String {
+ if mt.Key.Kind() == reflect.String && mt.Key != rt.JsonNumberType {
return &mapStrKeyDecoder{
mapType: mt,
assign: rt.GetMapStrAssign(vt),
@@ -399,7 +400,7 @@ func tryCompileKeyUnmarshaler(vt reflect.Type) decKey {
return decodeKeyTextUnmarshaler
}
- /* not support map key with `json.Unmarshaler` */
+ /* NOTE: encoding/json not support map key with `json.Unmarshaler` */
return nil
}
@@ -413,8 +414,18 @@ func (c *compiler) compileMapKey(vt reflect.Type) decKey {
return decodeKeyU8
case reflect.Uint16:
return decodeKeyU16
+ // NOTE: actually, encoding/json can't use float as map key
+ case reflect.Float32:
+ return decodeFloat32Key
+ case reflect.Float64:
+ return decodeFloat64Key
+ case reflect.String:
+ if rt.UnpackType(vt.Key()) == rt.JsonNumberType {
+ return decodeJsonNumberKey
+ }
+ fallthrough
default:
- panic(&json.UnmarshalTypeError{Type: vt})
+ return nil
}
}