From 95798180b394449d3585d0f154fb29302154d2fc Mon Sep 17 00:00:00 2001 From: Weixie Cui Date: Fri, 27 Mar 2026 20:46:44 +0800 Subject: [PATCH] reflect: pass StructOf field slice to reflectlite StructOf ignored its argument and always called reflectlite.StructOf with an empty field list. Convert []StructField to the reflectlite form so callers' fields are forwarded, consistent with FuncOf. --- src/reflect/type.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/reflect/type.go b/src/reflect/type.go index 884f89dc84..a390454320 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -513,8 +513,20 @@ func ArrayOf(n int, t Type) Type { return toType(reflectlite.ArrayOf(n, toRawType(t))) } -func StructOf([]StructField) Type { - return toType(reflectlite.StructOf([]reflectlite.StructField{})) +func StructOf(fields []StructField) Type { + rf := make([]reflectlite.StructField, len(fields)) + for i := range fields { + rf[i] = reflectlite.StructField{ + Name: fields[i].Name, + PkgPath: fields[i].PkgPath, + Type: toRawType(fields[i].Type), + Tag: fields[i].Tag, + Offset: fields[i].Offset, + Index: fields[i].Index, + Anonymous: fields[i].Anonymous, + } + } + return toType(reflectlite.StructOf(rf)) } func MapOf(key, value Type) Type {