From 2064413b545876ff93d5e985824986c2e06a619a Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 9 May 2024 15:40:34 -0700 Subject: [PATCH] reflect: restore ifaceIndir function for now CL 583755 removed all uses of the ifaceIndir function, and the function itself. Unfortunately, ifaceIndir is accessed using go:linkname by the popular github.com/goccy/go-json package. A bug has been filed to fix this upstream: https://github.com/goccy/go-json/issues/506 Until that bug is fixed and the fix is distributed, keep this function available. With luck we can remove this in the 1.24 release. For #67279 Change-Id: I15fccf82d7a172a0b15cdbefb0a0a48381998938 Reviewed-on: https://go-review.googlesource.com/c/go/+/584676 Reviewed-by: Dmitri Shuralyov Auto-Submit: Ian Lance Taylor Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor --- src/reflect/type.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/reflect/type.go b/src/reflect/type.go index 5ad74aabfc..47f7e45d7c 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -3031,3 +3031,16 @@ func TypeFor[T any]() Type { } return TypeOf((*T)(nil)).Elem() // only for an interface kind } + +// ifaceIndir reports whether t is stored indirectly in an interface value. +// This function is no longer called by the reflect package. +// Unfortunately, it is accessed using go:linkname by the popular +// github.com/goccy/go-json package. +// A bug has been filed to fix this upstream: +// https://github.com/goccy/go-json/issues/506 +// Until that bug is fixed and the fix is distributed, +// keep this function available. +// With luck we can remove this in the 1.24 release. +func ifaceIndir(t *abi.Type) bool { + return t.Kind_&abi.KindDirectIface == 0 +} -- 2.48.1