bump(github.com/modern-go/reflect2) to v1.0.2
github.com/modern-go/reflect2, pulled in by github.com/json-iterator/go, which we use in multiple dependencies, wasn't compatible with Go 1.18 until v1.0.2, so we need to update from v1.0.1. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
This commit is contained in:
parent
83a66a747e
commit
fea62ccc70
1
go.mod
1
go.mod
|
@ -18,6 +18,7 @@ require (
|
||||||
github.com/ishidawataru/sctp v0.0.0-20210226210310-f2269e66cdee // indirect
|
github.com/ishidawataru/sctp v0.0.0-20210226210310-f2269e66cdee // indirect
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
|
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
|
||||||
github.com/mattn/go-shellwords v1.0.12
|
github.com/mattn/go-shellwords v1.0.12
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/onsi/ginkgo v1.16.4
|
github.com/onsi/ginkgo v1.16.4
|
||||||
github.com/onsi/gomega v1.16.0
|
github.com/onsi/gomega v1.16.0
|
||||||
github.com/opencontainers/go-digest v1.0.0
|
github.com/opencontainers/go-digest v1.0.0
|
||||||
|
|
3
go.sum
3
go.sum
|
@ -594,8 +594,9 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
|
||||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
|
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
|
||||||
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
||||||
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
|
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.8.x
|
- 1.9.x
|
||||||
- 1.x
|
- 1.x
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
|
|
|
@ -1,15 +1,9 @@
|
||||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||||
|
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/modern-go/concurrent"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "e0a39a4cb4216ea8db28e22a69f4ec25610d513a"
|
|
||||||
version = "1.0.0"
|
|
||||||
|
|
||||||
[solve-meta]
|
[solve-meta]
|
||||||
analyzer-name = "dep"
|
analyzer-name = "dep"
|
||||||
analyzer-version = 1
|
analyzer-version = 1
|
||||||
inputs-digest = "daee8a88b3498b61c5640056665b8b9eea062006f5e596bbb6a3ed9119a11ec7"
|
input-imports = []
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
|
|
@ -26,10 +26,6 @@
|
||||||
|
|
||||||
ignored = []
|
ignored = []
|
||||||
|
|
||||||
[[constraint]]
|
|
||||||
name = "github.com/modern-go/concurrent"
|
|
||||||
version = "1.0.0"
|
|
||||||
|
|
||||||
[prune]
|
[prune]
|
||||||
go-tests = true
|
go-tests = true
|
||||||
unused-packages = true
|
unused-packages = true
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
module github.com/modern-go/reflect2
|
||||||
|
|
||||||
|
go 1.12
|
|
@ -0,0 +1,23 @@
|
||||||
|
//+build go1.18
|
||||||
|
|
||||||
|
package reflect2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// m escapes into the return value, but the caller of mapiterinit
|
||||||
|
// doesn't let the return value escape.
|
||||||
|
//go:noescape
|
||||||
|
//go:linkname mapiterinit reflect.mapiterinit
|
||||||
|
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer, it *hiter)
|
||||||
|
|
||||||
|
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
|
||||||
|
var it hiter
|
||||||
|
mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj), &it)
|
||||||
|
return &UnsafeMapIterator{
|
||||||
|
hiter: &it,
|
||||||
|
pKeyRType: type2.pKeyRType,
|
||||||
|
pElemRType: type2.pElemRType,
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +0,0 @@
|
||||||
//+build go1.7
|
|
||||||
|
|
||||||
package reflect2
|
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
//go:linkname resolveTypeOff reflect.resolveTypeOff
|
|
||||||
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer
|
|
|
@ -6,6 +6,9 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:linkname resolveTypeOff reflect.resolveTypeOff
|
||||||
|
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer
|
||||||
|
|
||||||
//go:linkname makemap reflect.makemap
|
//go:linkname makemap reflect.makemap
|
||||||
func makemap(rtype unsafe.Pointer, cap int) (m unsafe.Pointer)
|
func makemap(rtype unsafe.Pointer, cap int) (m unsafe.Pointer)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
//+build !go1.18
|
||||||
|
|
||||||
|
package reflect2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// m escapes into the return value, but the caller of mapiterinit
|
||||||
|
// doesn't let the return value escape.
|
||||||
|
//go:noescape
|
||||||
|
//go:linkname mapiterinit reflect.mapiterinit
|
||||||
|
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) (val *hiter)
|
||||||
|
|
||||||
|
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
|
||||||
|
return &UnsafeMapIterator{
|
||||||
|
hiter: mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)),
|
||||||
|
pKeyRType: type2.pKeyRType,
|
||||||
|
pElemRType: type2.pElemRType,
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +0,0 @@
|
||||||
//+build !go1.7
|
|
||||||
|
|
||||||
package reflect2
|
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer {
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
//+build !go1.9
|
|
||||||
|
|
||||||
package reflect2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
//go:linkname makemap reflect.makemap
|
|
||||||
func makemap(rtype unsafe.Pointer) (m unsafe.Pointer)
|
|
||||||
|
|
||||||
func makeMapWithSize(rtype unsafe.Pointer, cap int) unsafe.Pointer {
|
|
||||||
return makemap(rtype)
|
|
||||||
}
|
|
|
@ -1,8 +1,9 @@
|
||||||
package reflect2
|
package reflect2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/modern-go/concurrent"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"runtime"
|
||||||
|
"sync"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -130,13 +131,13 @@ var ConfigSafe = Config{UseSafeImplementation: true}.Froze()
|
||||||
|
|
||||||
type frozenConfig struct {
|
type frozenConfig struct {
|
||||||
useSafeImplementation bool
|
useSafeImplementation bool
|
||||||
cache *concurrent.Map
|
cache *sync.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg Config) Froze() *frozenConfig {
|
func (cfg Config) Froze() *frozenConfig {
|
||||||
return &frozenConfig{
|
return &frozenConfig{
|
||||||
useSafeImplementation: cfg.UseSafeImplementation,
|
useSafeImplementation: cfg.UseSafeImplementation,
|
||||||
cache: concurrent.NewMap(),
|
cache: new(sync.Map),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,11 +289,12 @@ func NoEscape(p unsafe.Pointer) unsafe.Pointer {
|
||||||
}
|
}
|
||||||
|
|
||||||
func UnsafeCastString(str string) []byte {
|
func UnsafeCastString(str string) []byte {
|
||||||
|
bytes := make([]byte, 0)
|
||||||
stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&str))
|
stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&str))
|
||||||
sliceHeader := &reflect.SliceHeader{
|
sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&bytes))
|
||||||
Data: stringHeader.Data,
|
sliceHeader.Data = stringHeader.Data
|
||||||
Cap: stringHeader.Len,
|
sliceHeader.Cap = stringHeader.Len
|
||||||
Len: stringHeader.Len,
|
sliceHeader.Len = stringHeader.Len
|
||||||
}
|
runtime.KeepAlive(str)
|
||||||
return *(*[]byte)(unsafe.Pointer(sliceHeader))
|
return bytes
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
echo "" > coverage.txt
|
|
||||||
|
|
||||||
for d in $(go list github.com/modern-go/reflect2-tests/... | grep -v vendor); do
|
|
||||||
go test -coverprofile=profile.out -coverpkg=github.com/modern-go/reflect2 $d
|
|
||||||
if [ -f profile.out ]; then
|
|
||||||
cat profile.out >> coverage.txt
|
|
||||||
rm profile.out
|
|
||||||
fi
|
|
||||||
done
|
|
|
@ -1,17 +1,13 @@
|
||||||
|
// +build !gccgo
|
||||||
|
|
||||||
package reflect2
|
package reflect2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// typelinks1 for 1.5 ~ 1.6
|
|
||||||
//go:linkname typelinks1 reflect.typelinks
|
|
||||||
func typelinks1() [][]unsafe.Pointer
|
|
||||||
|
|
||||||
// typelinks2 for 1.7 ~
|
// typelinks2 for 1.7 ~
|
||||||
//go:linkname typelinks2 reflect.typelinks
|
//go:linkname typelinks2 reflect.typelinks
|
||||||
func typelinks2() (sections []unsafe.Pointer, offset [][]int32)
|
func typelinks2() (sections []unsafe.Pointer, offset [][]int32)
|
||||||
|
@ -27,49 +23,10 @@ func discoverTypes() {
|
||||||
types = make(map[string]reflect.Type)
|
types = make(map[string]reflect.Type)
|
||||||
packages = make(map[string]map[string]reflect.Type)
|
packages = make(map[string]map[string]reflect.Type)
|
||||||
|
|
||||||
ver := runtime.Version()
|
loadGoTypes()
|
||||||
if ver == "go1.5" || strings.HasPrefix(ver, "go1.5.") {
|
|
||||||
loadGo15Types()
|
|
||||||
} else if ver == "go1.6" || strings.HasPrefix(ver, "go1.6.") {
|
|
||||||
loadGo15Types()
|
|
||||||
} else {
|
|
||||||
loadGo17Types()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadGo15Types() {
|
func loadGoTypes() {
|
||||||
var obj interface{} = reflect.TypeOf(0)
|
|
||||||
typePtrss := typelinks1()
|
|
||||||
for _, typePtrs := range typePtrss {
|
|
||||||
for _, typePtr := range typePtrs {
|
|
||||||
(*emptyInterface)(unsafe.Pointer(&obj)).word = typePtr
|
|
||||||
typ := obj.(reflect.Type)
|
|
||||||
if typ.Kind() == reflect.Ptr && typ.Elem().Kind() == reflect.Struct {
|
|
||||||
loadedType := typ.Elem()
|
|
||||||
pkgTypes := packages[loadedType.PkgPath()]
|
|
||||||
if pkgTypes == nil {
|
|
||||||
pkgTypes = map[string]reflect.Type{}
|
|
||||||
packages[loadedType.PkgPath()] = pkgTypes
|
|
||||||
}
|
|
||||||
types[loadedType.String()] = loadedType
|
|
||||||
pkgTypes[loadedType.Name()] = loadedType
|
|
||||||
}
|
|
||||||
if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Ptr &&
|
|
||||||
typ.Elem().Elem().Kind() == reflect.Struct {
|
|
||||||
loadedType := typ.Elem().Elem()
|
|
||||||
pkgTypes := packages[loadedType.PkgPath()]
|
|
||||||
if pkgTypes == nil {
|
|
||||||
pkgTypes = map[string]reflect.Type{}
|
|
||||||
packages[loadedType.PkgPath()] = pkgTypes
|
|
||||||
}
|
|
||||||
types[loadedType.String()] = loadedType
|
|
||||||
pkgTypes[loadedType.Name()] = loadedType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func loadGo17Types() {
|
|
||||||
var obj interface{} = reflect.TypeOf(0)
|
var obj interface{} = reflect.TypeOf(0)
|
||||||
sections, offset := typelinks2()
|
sections, offset := typelinks2()
|
||||||
for i, offs := range offset {
|
for i, offs := range offset {
|
||||||
|
|
|
@ -19,18 +19,12 @@ func typedslicecopy(elemType unsafe.Pointer, dst, src sliceHeader) int
|
||||||
|
|
||||||
//go:linkname mapassign reflect.mapassign
|
//go:linkname mapassign reflect.mapassign
|
||||||
//go:noescape
|
//go:noescape
|
||||||
func mapassign(rtype unsafe.Pointer, m unsafe.Pointer, key, val unsafe.Pointer)
|
func mapassign(rtype unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer, val unsafe.Pointer)
|
||||||
|
|
||||||
//go:linkname mapaccess reflect.mapaccess
|
//go:linkname mapaccess reflect.mapaccess
|
||||||
//go:noescape
|
//go:noescape
|
||||||
func mapaccess(rtype unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) (val unsafe.Pointer)
|
func mapaccess(rtype unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) (val unsafe.Pointer)
|
||||||
|
|
||||||
// m escapes into the return value, but the caller of mapiterinit
|
|
||||||
// doesn't let the return value escape.
|
|
||||||
//go:noescape
|
|
||||||
//go:linkname mapiterinit reflect.mapiterinit
|
|
||||||
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) *hiter
|
|
||||||
|
|
||||||
//go:noescape
|
//go:noescape
|
||||||
//go:linkname mapiternext reflect.mapiternext
|
//go:linkname mapiternext reflect.mapiternext
|
||||||
func mapiternext(it *hiter)
|
func mapiternext(it *hiter)
|
||||||
|
@ -42,9 +36,21 @@ func ifaceE2I(rtype unsafe.Pointer, src interface{}, dst unsafe.Pointer)
|
||||||
// If you modify hiter, also change cmd/internal/gc/reflect.go to indicate
|
// If you modify hiter, also change cmd/internal/gc/reflect.go to indicate
|
||||||
// the layout of this structure.
|
// the layout of this structure.
|
||||||
type hiter struct {
|
type hiter struct {
|
||||||
key unsafe.Pointer // Must be in first position. Write nil to indicate iteration end (see cmd/internal/gc/range.go).
|
key unsafe.Pointer
|
||||||
value unsafe.Pointer // Must be in second position (see cmd/internal/gc/range.go).
|
value unsafe.Pointer
|
||||||
// rest fields are ignored
|
t unsafe.Pointer
|
||||||
|
h unsafe.Pointer
|
||||||
|
buckets unsafe.Pointer
|
||||||
|
bptr unsafe.Pointer
|
||||||
|
overflow *[]unsafe.Pointer
|
||||||
|
oldoverflow *[]unsafe.Pointer
|
||||||
|
startBucket uintptr
|
||||||
|
offset uint8
|
||||||
|
wrapped bool
|
||||||
|
B uint8
|
||||||
|
i uint8
|
||||||
|
bucket uintptr
|
||||||
|
checkBucket uintptr
|
||||||
}
|
}
|
||||||
|
|
||||||
// add returns p+x.
|
// add returns p+x.
|
||||||
|
|
|
@ -107,14 +107,6 @@ func (type2 *UnsafeMapType) Iterate(obj interface{}) MapIterator {
|
||||||
return type2.UnsafeIterate(objEFace.data)
|
return type2.UnsafeIterate(objEFace.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
|
|
||||||
return &UnsafeMapIterator{
|
|
||||||
hiter: mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)),
|
|
||||||
pKeyRType: type2.pKeyRType,
|
|
||||||
pElemRType: type2.pElemRType,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type UnsafeMapIterator struct {
|
type UnsafeMapIterator struct {
|
||||||
*hiter
|
*hiter
|
||||||
pKeyRType unsafe.Pointer
|
pKeyRType unsafe.Pointer
|
||||||
|
|
|
@ -344,7 +344,7 @@ github.com/moby/term
|
||||||
github.com/moby/term/windows
|
github.com/moby/term/windows
|
||||||
# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
|
# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
|
||||||
github.com/modern-go/concurrent
|
github.com/modern-go/concurrent
|
||||||
# github.com/modern-go/reflect2 v1.0.1
|
# github.com/modern-go/reflect2 v1.0.2
|
||||||
github.com/modern-go/reflect2
|
github.com/modern-go/reflect2
|
||||||
# github.com/morikuni/aec v1.0.0
|
# github.com/morikuni/aec v1.0.0
|
||||||
github.com/morikuni/aec
|
github.com/morikuni/aec
|
||||||
|
|
Loading…
Reference in New Issue