diff -r db4911b0c721 -r 445e01aede7e vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go Tue Aug 23 22:39:43 2022 +0200 @@ -0,0 +1,23 @@ +package danger + +import ( + "reflect" + "unsafe" +) + +// typeID is used as key in encoder and decoder caches to enable using +// the optimize runtime.mapaccess2_fast64 function instead of the more +// expensive lookup if we were to use reflect.Type as map key. +// +// typeID holds the pointer to the reflect.Type value, which is unique +// in the program. +// +// https://github.com/segmentio/encoding/blob/master/json/codec.go#L59-L61 +type TypeID unsafe.Pointer + +func MakeTypeID(t reflect.Type) TypeID { + // reflect.Type has the fields: + // typ unsafe.Pointer + // ptr unsafe.Pointer + return TypeID((*[2]unsafe.Pointer)(unsafe.Pointer(&t))[1]) +}