mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-15 23:47:39 +00:00
util/codegen: treat unique.Handle as an opaque value type
It doesn't need a Clone method, like a time.Time, etc. And then, because Go 1.23+ uses unique.Handle internally for the netip package types, we can remove those special cases. Updates #14058 (pulled out from that PR) Updates tailscale/corp#24485 Change-Id: Iac3548a9417ccda5987f98e0305745a6e178b375 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:

committed by
Brad Fitzpatrick

parent
b9ecc50ce3
commit
00be1761b7
@@ -10,6 +10,8 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
"unique"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/exp/constraints"
|
||||
@@ -84,6 +86,16 @@ type PointerUnionParam[T netip.Prefix | BasicType | IntPtr] struct {
|
||||
V T
|
||||
}
|
||||
|
||||
type StructWithUniqueHandle struct{ _ unique.Handle[[32]byte] }
|
||||
|
||||
type StructWithTime struct{ _ time.Time }
|
||||
|
||||
type StructWithNetipTypes struct {
|
||||
_ netip.Addr
|
||||
_ netip.AddrPort
|
||||
_ netip.Prefix
|
||||
}
|
||||
|
||||
type Interface interface {
|
||||
Method()
|
||||
}
|
||||
@@ -161,6 +173,18 @@ func TestGenericContainsPointers(t *testing.T) {
|
||||
typ: "PointerUnionParam",
|
||||
wantPointer: true,
|
||||
},
|
||||
{
|
||||
typ: "StructWithUniqueHandle",
|
||||
wantPointer: false,
|
||||
},
|
||||
{
|
||||
typ: "StructWithTime",
|
||||
wantPointer: false,
|
||||
},
|
||||
{
|
||||
typ: "StructWithNetipTypes",
|
||||
wantPointer: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
Reference in New Issue
Block a user