safe type checks
This commit is contained in:
parent
9e0dcd6677
commit
9aa6df75cb
14
type.go
14
type.go
@ -46,7 +46,12 @@ func scalarType(t reflect.Type) Scalar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func scalarTypeReflect(v any) Scalar {
|
func scalarTypeReflect(v any) Scalar {
|
||||||
return scalarType(reflect.TypeOf(v))
|
t := reflect.TypeOf(v)
|
||||||
|
if t == nil {
|
||||||
|
return Any
|
||||||
|
}
|
||||||
|
|
||||||
|
return scalarType(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func scalarSize(t reflect.Type) int {
|
func scalarSize(t reflect.Type) int {
|
||||||
@ -67,7 +72,12 @@ func valueSize(v reflect.Value) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func valueSizeReflect(v any) int {
|
func valueSizeReflect(v any) int {
|
||||||
return valueSize(reflect.ValueOf(v))
|
r := reflect.ValueOf(v)
|
||||||
|
if hasCircularReference(r) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return valueSize(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setVisited[T comparable](visited map[T]bool, k T) map[T]bool {
|
func setVisited[T comparable](visited map[T]bool, k T) map[T]bool {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user