From 229f479a7dab1358f0fd4abecb20751430f56103 Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Sat, 11 Mar 2023 23:00:09 -0800 Subject: [PATCH] reflect: make sure pointerTo() works for named types --- src/reflect/type.go | 4 ++++ src/reflect/value_test.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/reflect/type.go b/src/reflect/type.go index cc79a709..4999afdd 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -490,6 +490,10 @@ func PointerTo(t Type) Type { } func pointerTo(t *rawType) *rawType { + if t.isNamed() { + return (*elemType)(unsafe.Pointer(t)).ptrTo + } + switch t.Kind() { case Pointer: // TODO(dgryski): This is blocking https://github.com/tinygo-org/tinygo/issues/3131 diff --git a/src/reflect/value_test.go b/src/reflect/value_test.go index c915a36d..2bc8f927 100644 --- a/src/reflect/value_test.go +++ b/src/reflect/value_test.go @@ -275,6 +275,14 @@ func TestNamedTypes(t *testing.T) { t.Errorf("Type.String(base64.Encoding{})=%v, want %v", got, want) } + type Repository struct { + RoleName *string `json:"role_name,omitempty"` + } + + var repo *Repository + v := ValueOf(&repo).Elem() + n := New(v.Type().Elem()) + v.Set(n) } func TestStruct(t *testing.T) {