summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/resolver
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/resolver
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/resolver')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/resolver/resolver.go32
-rw-r--r--vendor/github.com/bytedance/sonic/internal/resolver/stubs_go120.go (renamed from vendor/github.com/bytedance/sonic/internal/resolver/stubs_compat.go)3
-rw-r--r--vendor/github.com/bytedance/sonic/internal/resolver/stubs_go123.go51
-rw-r--r--vendor/github.com/bytedance/sonic/internal/resolver/stubs_latest.go13
4 files changed, 84 insertions, 15 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/resolver/resolver.go b/vendor/github.com/bytedance/sonic/internal/resolver/resolver.go
index 795434f4e..1c30ad113 100644
--- a/vendor/github.com/bytedance/sonic/internal/resolver/resolver.go
+++ b/vendor/github.com/bytedance/sonic/internal/resolver/resolver.go
@@ -17,10 +17,10 @@
package resolver
import (
- `fmt`
- `reflect`
- `strings`
- `sync`
+ "fmt"
+ "reflect"
+ "strings"
+ "sync"
)
type FieldOpts int
@@ -29,6 +29,7 @@ type OffsetType int
const (
F_omitempty FieldOpts = 1 << iota
F_stringize
+ F_omitzero
)
const (
@@ -47,6 +48,7 @@ type FieldMeta struct {
Path []Offset
Opts FieldOpts
Type reflect.Type
+ IsZero func(reflect.Value) bool
}
func (self *FieldMeta) String() string {
@@ -117,20 +119,26 @@ func resolveFields(vt reflect.Type) []FieldMeta {
/* convert each field */
for _, fv := range tfv.list {
+ /* add to result */
+ ret = append(ret, FieldMeta{})
+ fm := &ret[len(ret)-1]
+
item := vt
path := []Offset(nil)
- opts := FieldOpts(0)
/* check for "string" */
if fv.quoted {
- opts |= F_stringize
+ fm.Opts |= F_stringize
}
/* check for "omitempty" */
if fv.omitEmpty {
- opts |= F_omitempty
+ fm.Opts |= F_omitempty
}
+ /* handle the "omitzero" */
+ handleOmitZero(fv, fm)
+
/* dump the field path */
for _, i := range fv.index {
kind := F_offset
@@ -161,13 +169,9 @@ func resolveFields(vt reflect.Type) []FieldMeta {
path[idx].Kind = F_offset
}
- /* add to result */
- ret = append(ret, FieldMeta {
- Type: fvt,
- Opts: opts,
- Path: path,
- Name: fv.name,
- })
+ fm.Type = fvt
+ fm.Path = path
+ fm.Name = fv.name
}
/* optimize the offsets */
diff --git a/vendor/github.com/bytedance/sonic/internal/resolver/stubs_compat.go b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_go120.go
index a3479543d..c0276f544 100644
--- a/vendor/github.com/bytedance/sonic/internal/resolver/stubs_compat.go
+++ b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_go120.go
@@ -1,3 +1,4 @@
+//go:build !go1.21
// +build !go1.21
/*
@@ -46,3 +47,5 @@ type StdStructFields struct {
//go:noescape
//go:linkname typeFields encoding/json.typeFields
func typeFields(_ reflect.Type) StdStructFields
+
+func handleOmitZero(f StdField, fv *FieldMeta) {}
diff --git a/vendor/github.com/bytedance/sonic/internal/resolver/stubs_go123.go b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_go123.go
new file mode 100644
index 000000000..a73f024f5
--- /dev/null
+++ b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_go123.go
@@ -0,0 +1,51 @@
+//go:build go1.21 && !go1.24
+// +build go1.21,!go1.24
+
+/*
+ * Copyright 2021 ByteDance Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package resolver
+
+import (
+ _ `encoding/json`
+ `reflect`
+ _ `unsafe`
+)
+
+type StdField struct {
+ name string
+ nameBytes []byte
+ nameNonEsc string
+ nameEscHTML string
+ tag bool
+ index []int
+ typ reflect.Type
+ omitEmpty bool
+ quoted bool
+ encoder func()
+}
+
+type StdStructFields struct {
+ list []StdField
+ nameIndex map[string]*StdField
+ byFoldedName map[string]*StdField
+}
+
+//go:noescape
+//go:linkname typeFields encoding/json.typeFields
+func typeFields(_ reflect.Type) StdStructFields
+
+func handleOmitZero(f StdField, fv *FieldMeta) {}
diff --git a/vendor/github.com/bytedance/sonic/internal/resolver/stubs_latest.go b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_latest.go
index f5a9bff2b..b9486a699 100644
--- a/vendor/github.com/bytedance/sonic/internal/resolver/stubs_latest.go
+++ b/vendor/github.com/bytedance/sonic/internal/resolver/stubs_latest.go
@@ -1,4 +1,5 @@
-// +build go1.21
+//go:build go1.24
+// +build go1.24
/*
* Copyright 2021 ByteDance Inc.
@@ -33,6 +34,8 @@ type StdField struct {
index []int
typ reflect.Type
omitEmpty bool
+ omitZero bool
+ isZero func(reflect.Value) bool
quoted bool
encoder func()
}
@@ -46,3 +49,11 @@ type StdStructFields struct {
//go:noescape
//go:linkname typeFields encoding/json.typeFields
func typeFields(_ reflect.Type) StdStructFields
+
+func handleOmitZero(fv StdField, fm *FieldMeta) {
+ if fv.omitZero {
+ fm.Opts |= F_omitzero
+ fm.IsZero = fv.isZero
+ }
+}
+