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
@@ -277,11 +277,16 @@ func IsInvalid(t types.Type) bool {
|
||||
// It has special handling for some types that contain pointers
|
||||
// that we know are free from memory aliasing/mutation concerns.
|
||||
func ContainsPointers(typ types.Type) bool {
|
||||
switch typ.String() {
|
||||
s := typ.String()
|
||||
switch s {
|
||||
case "time.Time":
|
||||
// time.Time contains a pointer that does not need copying
|
||||
// time.Time contains a pointer that does not need cloning.
|
||||
return false
|
||||
case "inet.af/netip.Addr", "net/netip.Addr", "net/netip.Prefix", "net/netip.AddrPort":
|
||||
case "inet.af/netip.Addr":
|
||||
return false
|
||||
}
|
||||
if strings.HasPrefix(s, "unique.Handle[") {
|
||||
// unique.Handle contains a pointer that does not need cloning.
|
||||
return false
|
||||
}
|
||||
switch ft := typ.Underlying().(type) {
|
||||
|
Reference in New Issue
Block a user