// Copyright 2024 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package reflection_test import ( "fmt" "math" "testing" testpb "google.golang.org/protobuf/internal/testprotos/testeditions" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/testing/prototest" ) func TestOpenConcrete(t *testing.T) { prototest.Message{}.Test(t, newTestMessageOpen(nil).ProtoReflect().Type()) } func TestOpenReflection(t *testing.T) { prototest.Message{}.Test(t, (*testpb.TestAllTypes)(nil).ProtoReflect().Type()) } func TestOpenShadow_GetConcrete_SetReflection(t *testing.T) { prototest.Message{}.Test(t, newShadow(func() (get, set protoreflect.ProtoMessage) { m := &testpb.TestAllTypes{} return newTestMessageOpen(m), m }).ProtoReflect().Type()) } func TestOpenShadow_GetReflection_SetConcrete(t *testing.T) { prototest.Message{}.Test(t, newShadow(func() (get, set protoreflect.ProtoMessage) { m := &testpb.TestAllTypes{} return m, newTestMessageOpen(m) }).ProtoReflect().Type()) } func newTestMessageOpen(m *testpb.TestAllTypes) protoreflect.ProtoMessage { return &testProtoMessage{ m: m, md: m.ProtoReflect().Descriptor(), new: func() protoreflect.Message { return newTestMessageOpen(&testpb.TestAllTypes{}).ProtoReflect() }, has: func(num protoreflect.FieldNumber) bool { switch num { case fieldSingularInt32: return m.GetSingularInt32() != 0 case fieldSingularInt64: return m.GetSingularInt64() != 0 case fieldSingularUint32: return m.GetSingularUint32() != 0 case fieldSingularUint64: return m.GetSingularUint64() != 0 case fieldSingularSint32: return m.GetSingularSint32() != 0 case fieldSingularSint64: return m.GetSingularSint64() != 0 case fieldSingularFixed32: return m.GetSingularFixed32() != 0 case fieldSingularFixed64: return m.GetSingularFixed64() != 0 case fieldSingularSfixed32: return m.GetSingularSfixed32() != 0 case fieldSingularSfixed64: return m.GetSingularSfixed64() != 0 case fieldSingularFloat: return m.GetSingularFloat() != 0 || math.Signbit(float64(m.GetSingularFloat())) case fieldSingularDouble: return m.GetSingularDouble() != 0 || math.Signbit(m.GetSingularDouble()) case fieldSingularBool: return m.GetSingularBool() != false case fieldSingularString: return m.GetSingularString() != "" case fieldSingularBytes: return m.SingularBytes != nil case fieldSingularNestedEnum: return m.GetSingularNestedEnum() != testpb.TestAllTypes_FOO case fieldSingularForeignEnum: return m.GetSingularForeignEnum() != testpb.ForeignEnum_FOREIGN_ZERO case fieldSingularImportEnum: return m.GetSingularImportEnum() != testpb.ImportEnum_IMPORT_ZERO case fieldOptionalInt32: return m.OptionalInt32 != nil case fieldOptionalInt64: return m.OptionalInt64 != nil case fieldOptionalUint32: return m.OptionalUint32 != nil case fieldOptionalUint64: return m.OptionalUint64 != nil case fieldOptionalSint32: return m.OptionalSint32 != nil case fieldOptionalSint64: return m.OptionalSint64 != nil case fieldOptionalFixed32: return m.OptionalFixed32 != nil case fieldOptionalFixed64: return m.OptionalFixed64 != nil case fieldOptionalSfixed32: return m.OptionalSfixed32 != nil case fieldOptionalSfixed64: return m.OptionalSfixed64 != nil case fieldOptionalFloat: return m.OptionalFloat != nil case fieldOptionalDouble: return m.OptionalDouble != nil case fieldOptionalBool: return m.OptionalBool != nil case fieldOptionalString: return m.OptionalString != nil case fieldOptionalBytes: return m.OptionalBytes != nil case fieldOptionalGroup: return m.Optionalgroup != nil case fieldNotGroupLikeDelimited: return m.NotGroupLikeDelimited != nil case fieldOptionalNestedMessage: return m.OptionalNestedMessage != nil case fieldOptionalForeignMessage: return m.OptionalForeignMessage != nil case fieldOptionalImportMessage: return m.OptionalImportMessage != nil case fieldOptionalNestedEnum: return m.OptionalNestedEnum != nil case fieldOptionalForeignEnum: return m.OptionalForeignEnum != nil case fieldOptionalImportEnum: return m.OptionalImportEnum != nil case fieldOptionalLazyNestedMessage: return m.OptionalLazyNestedMessage != nil case fieldRepeatedInt32: return len(m.GetRepeatedInt32()) > 0 case fieldRepeatedInt64: return len(m.GetRepeatedInt64()) > 0 case fieldRepeatedUint32: return len(m.GetRepeatedUint32()) > 0 case fieldRepeatedUint64: return len(m.GetRepeatedUint64()) > 0 case fieldRepeatedSint32: return len(m.GetRepeatedSint32()) > 0 case fieldRepeatedSint64: return len(m.GetRepeatedSint64()) > 0 case fieldRepeatedFixed32: return len(m.GetRepeatedFixed32()) > 0 case fieldRepeatedFixed64: return len(m.GetRepeatedFixed64()) > 0 case fieldRepeatedSfixed32: return len(m.GetRepeatedSfixed32()) > 0 case fieldRepeatedSfixed64: return len(m.GetRepeatedSfixed64()) > 0 case fieldRepeatedFloat: return len(m.GetRepeatedFloat()) > 0 case fieldRepeatedDouble: return len(m.GetRepeatedDouble()) > 0 case fieldRepeatedBool: return len(m.GetRepeatedBool()) > 0 case fieldRepeatedString: return len(m.GetRepeatedString()) > 0 case fieldRepeatedBytes: return len(m.GetRepeatedBytes()) > 0 case fieldRepeatedGroup: return len(m.GetRepeatedgroup()) > 0 case fieldRepeatedNestedMessage: return len(m.GetRepeatedNestedMessage()) > 0 case fieldRepeatedForeignMessage: return len(m.GetRepeatedForeignMessage()) > 0 case fieldRepeatedImportMessage: return len(m.GetRepeatedImportmessage()) > 0 case fieldRepeatedNestedEnum: return len(m.GetRepeatedNestedEnum()) > 0 case fieldRepeatedForeignEnum: return len(m.GetRepeatedForeignEnum()) > 0 case fieldRepeatedImportEnum: return len(m.GetRepeatedImportenum()) > 0 case fieldMapInt32Int32: return len(m.GetMapInt32Int32()) > 0 case fieldMapInt64Int64: return len(m.GetMapInt64Int64()) > 0 case fieldMapUint32Uint32: return len(m.GetMapUint32Uint32()) > 0 case fieldMapUint64Uint64: return len(m.GetMapUint64Uint64()) > 0 case fieldMapSint32Sint32: return len(m.GetMapSint32Sint32()) > 0 case fieldMapSint64Sint64: return len(m.GetMapSint64Sint64()) > 0 case fieldMapFixed32Fixed32: return len(m.GetMapFixed32Fixed32()) > 0 case fieldMapFixed64Fixed64: return len(m.GetMapFixed64Fixed64()) > 0 case fieldMapSfixed32Sfixed32: return len(m.GetMapSfixed32Sfixed32()) > 0 case fieldMapSfixed64Sfixed64: return len(m.GetMapSfixed64Sfixed64()) > 0 case fieldMapInt32Float: return len(m.GetMapInt32Float()) > 0 case fieldMapInt32Double: return len(m.GetMapInt32Double()) > 0 case fieldMapBoolBool: return len(m.GetMapBoolBool()) > 0 case fieldMapStringString: return len(m.GetMapStringString()) > 0 case fieldMapStringBytes: return len(m.GetMapStringBytes()) > 0 case fieldMapStringNestedMessage: return len(m.GetMapStringNestedMessage()) > 0 case fieldMapStringNestedEnum: return len(m.GetMapStringNestedEnum()) > 0 case fieldDefaultInt32: return m.DefaultInt32 != nil case fieldDefaultInt64: return m.DefaultInt64 != nil case fieldDefaultUint32: return m.DefaultUint32 != nil case fieldDefaultUint64: return m.DefaultUint64 != nil case fieldDefaultSint32: return m.DefaultSint32 != nil case fieldDefaultSint64: return m.DefaultSint64 != nil case fieldDefaultFixed32: return m.DefaultFixed32 != nil case fieldDefaultFixed64: return m.DefaultFixed64 != nil case fieldDefaultSfixed32: return m.DefaultSfixed32 != nil case fieldDefaultSfixed64: return m.DefaultSfixed64 != nil case fieldDefaultFloat: return m.DefaultFloat != nil case fieldDefaultDouble: return m.DefaultDouble != nil case fieldDefaultBool: return m.DefaultBool != nil case fieldDefaultString: return m.DefaultString != nil case fieldDefaultBytes: return m.DefaultBytes != nil case fieldDefaultNestedEnum: return m.DefaultNestedEnum != nil case fieldDefaultForeignEnum: return m.DefaultForeignEnum != nil case fieldOneofUint32: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofUint32) return ok case fieldOneofNestedMessage: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofNestedMessage) return ok case fieldOneofString: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofString) return ok case fieldOneofBytes: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofBytes) return ok case fieldOneofBool: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofBool) return ok case fieldOneofUint64: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofUint64) return ok case fieldOneofFloat: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofFloat) return ok case fieldOneofDouble: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofDouble) return ok case fieldOneofEnum: _, ok := m.OneofField.(*testpb.TestAllTypes_OneofEnum) return ok case fieldOneofGroup: _, ok := m.OneofField.(*testpb.TestAllTypes_Oneofgroup) return ok case fieldOneofOptionalUint32: _, ok := m.OneofOptional.(*testpb.TestAllTypes_OneofOptionalUint32) return ok default: panic(fmt.Sprintf("has: unknown field %d", num)) } }, get: func(num protoreflect.FieldNumber) any { switch num { case fieldSingularInt32: return m.GetSingularInt32() case fieldSingularInt64: return m.GetSingularInt64() case fieldSingularUint32: return m.GetSingularUint32() case fieldSingularUint64: return m.GetSingularUint64() case fieldSingularSint32: return m.GetSingularSint32() case fieldSingularSint64: return m.GetSingularSint64() case fieldSingularFixed32: return m.GetSingularFixed32() case fieldSingularFixed64: return m.GetSingularFixed64() case fieldSingularSfixed32: return m.GetSingularSfixed32() case fieldSingularSfixed64: return m.GetSingularSfixed64() case fieldSingularFloat: return m.GetSingularFloat() case fieldSingularDouble: return m.GetSingularDouble() case fieldSingularBool: return m.GetSingularBool() case fieldSingularString: return m.GetSingularString() case fieldSingularBytes: return m.GetSingularBytes() case fieldSingularNestedEnum: return m.GetSingularNestedEnum() case fieldSingularForeignEnum: return m.GetSingularForeignEnum() case fieldSingularImportEnum: return m.GetSingularImportEnum() case fieldOptionalInt32: return m.GetOptionalInt32() case fieldOptionalInt64: return m.GetOptionalInt64() case fieldOptionalUint32: return m.GetOptionalUint32() case fieldOptionalUint64: return m.GetOptionalUint64() case fieldOptionalSint32: return m.GetOptionalSint32() case fieldOptionalSint64: return m.GetOptionalSint64() case fieldOptionalFixed32: return m.GetOptionalFixed32() case fieldOptionalFixed64: return m.GetOptionalFixed64() case fieldOptionalSfixed32: return m.GetOptionalSfixed32() case fieldOptionalSfixed64: return m.GetOptionalSfixed64() case fieldOptionalFloat: return m.GetOptionalFloat() case fieldOptionalDouble: return m.GetOptionalDouble() case fieldOptionalBool: return m.GetOptionalBool() case fieldOptionalString: return m.GetOptionalString() case fieldOptionalBytes: return m.GetOptionalBytes() case fieldOptionalGroup: return m.GetOptionalgroup() case fieldNotGroupLikeDelimited: return m.GetNotGroupLikeDelimited() case fieldOptionalNestedMessage: return m.GetOptionalNestedMessage() case fieldOptionalForeignMessage: return m.GetOptionalForeignMessage() case fieldOptionalImportMessage: return m.GetOptionalImportMessage() case fieldOptionalNestedEnum: return m.GetOptionalNestedEnum() case fieldOptionalForeignEnum: return m.GetOptionalForeignEnum() case fieldOptionalImportEnum: return m.GetOptionalImportEnum() case fieldOptionalLazyNestedMessage: return m.GetOptionalLazyNestedMessage() case fieldRepeatedInt32: return m.GetRepeatedInt32() case fieldRepeatedInt64: return m.GetRepeatedInt64() case fieldRepeatedUint32: return m.GetRepeatedUint32() case fieldRepeatedUint64: return m.GetRepeatedUint64() case fieldRepeatedSint32: return m.GetRepeatedSint32() case fieldRepeatedSint64: return m.GetRepeatedSint64() case fieldRepeatedFixed32: return m.GetRepeatedFixed32() case fieldRepeatedFixed64: return m.GetRepeatedFixed64() case fieldRepeatedSfixed32: return m.GetRepeatedSfixed32() case fieldRepeatedSfixed64: return m.GetRepeatedSfixed64() case fieldRepeatedFloat: return m.GetRepeatedFloat() case fieldRepeatedDouble: return m.GetRepeatedDouble() case fieldRepeatedBool: return m.GetRepeatedBool() case fieldRepeatedString: return m.GetRepeatedString() case fieldRepeatedBytes: return m.GetRepeatedBytes() case fieldRepeatedGroup: return m.GetRepeatedgroup() case fieldRepeatedNestedMessage: return m.GetRepeatedNestedMessage() case fieldRepeatedForeignMessage: return m.GetRepeatedForeignMessage() case fieldRepeatedImportMessage: return m.GetRepeatedImportmessage() case fieldRepeatedNestedEnum: return m.GetRepeatedNestedEnum() case fieldRepeatedForeignEnum: return m.GetRepeatedForeignEnum() case fieldRepeatedImportEnum: return m.GetRepeatedImportenum() case fieldMapInt32Int32: return m.GetMapInt32Int32() case fieldMapInt64Int64: return m.GetMapInt64Int64() case fieldMapUint32Uint32: return m.GetMapUint32Uint32() case fieldMapUint64Uint64: return m.GetMapUint64Uint64() case fieldMapSint32Sint32: return m.GetMapSint32Sint32() case fieldMapSint64Sint64: return m.GetMapSint64Sint64() case fieldMapFixed32Fixed32: return m.GetMapFixed32Fixed32() case fieldMapFixed64Fixed64: return m.GetMapFixed64Fixed64() case fieldMapSfixed32Sfixed32: return m.GetMapSfixed32Sfixed32() case fieldMapSfixed64Sfixed64: return m.GetMapSfixed64Sfixed64() case fieldMapInt32Float: return m.GetMapInt32Float() case fieldMapInt32Double: return m.GetMapInt32Double() case fieldMapBoolBool: return m.GetMapBoolBool() case fieldMapStringString: return m.GetMapStringString() case fieldMapStringBytes: return m.GetMapStringBytes() case fieldMapStringNestedMessage: return m.GetMapStringNestedMessage() case fieldMapStringNestedEnum: return m.GetMapStringNestedEnum() case fieldDefaultInt32: return m.GetDefaultInt32() case fieldDefaultInt64: return m.GetDefaultInt64() case fieldDefaultUint32: return m.GetDefaultUint32() case fieldDefaultUint64: return m.GetDefaultUint64() case fieldDefaultSint32: return m.GetDefaultSint32() case fieldDefaultSint64: return m.GetDefaultSint64() case fieldDefaultFixed32: return m.GetDefaultFixed32() case fieldDefaultFixed64: return m.GetDefaultFixed64() case fieldDefaultSfixed32: return m.GetDefaultSfixed32() case fieldDefaultSfixed64: return m.GetDefaultSfixed64() case fieldDefaultFloat: return m.GetDefaultFloat() case fieldDefaultDouble: return m.GetDefaultDouble() case fieldDefaultBool: return m.GetDefaultBool() case fieldDefaultString: return m.GetDefaultString() case fieldDefaultBytes: return m.GetDefaultBytes() case fieldDefaultNestedEnum: return m.GetDefaultNestedEnum() case fieldDefaultForeignEnum: return m.GetDefaultForeignEnum() case fieldOneofUint32: return m.GetOneofUint32() case fieldOneofNestedMessage: return m.GetOneofNestedMessage() case fieldOneofString: return m.GetOneofString() case fieldOneofBytes: return m.GetOneofBytes() case fieldOneofBool: return m.GetOneofBool() case fieldOneofUint64: return m.GetOneofUint64() case fieldOneofFloat: return m.GetOneofFloat() case fieldOneofDouble: return m.GetOneofDouble() case fieldOneofEnum: return protoreflect.EnumNumber(m.GetOneofEnum()) case fieldOneofGroup: return m.GetOneofgroup() case fieldOneofOptionalUint32: return m.GetOneofOptionalUint32() default: panic(fmt.Sprintf("get: unknown field %d", num)) } }, set: func(num protoreflect.FieldNumber, v any) { switch num { case fieldSingularInt32: m.SingularInt32 = v.(int32) case fieldSingularInt64: m.SingularInt64 = v.(int64) case fieldSingularUint32: m.SingularUint32 = v.(uint32) case fieldSingularUint64: m.SingularUint64 = v.(uint64) case fieldSingularSint32: m.SingularSint32 = v.(int32) case fieldSingularSint64: m.SingularSint64 = v.(int64) case fieldSingularFixed32: m.SingularFixed32 = v.(uint32) case fieldSingularFixed64: m.SingularFixed64 = v.(uint64) case fieldSingularSfixed32: m.SingularSfixed32 = v.(int32) case fieldSingularSfixed64: m.SingularSfixed64 = v.(int64) case fieldSingularFloat: m.SingularFloat = v.(float32) case fieldSingularDouble: m.SingularDouble = v.(float64) case fieldSingularBool: m.SingularBool = v.(bool) case fieldSingularString: m.SingularString = v.(string) case fieldSingularBytes: m.SingularBytes = v.([]byte) case fieldSingularNestedEnum: m.SingularNestedEnum = testpb.TestAllTypes_NestedEnum(v.(protoreflect.EnumNumber)) case fieldSingularForeignEnum: m.SingularForeignEnum = testpb.ForeignEnum(v.(protoreflect.EnumNumber)) case fieldSingularImportEnum: m.SingularImportEnum = testpb.ImportEnum(v.(protoreflect.EnumNumber)) case fieldOptionalInt32: m.OptionalInt32 = proto.Int32(v.(int32)) case fieldOptionalInt64: m.OptionalInt64 = proto.Int64(v.(int64)) case fieldOptionalUint32: m.OptionalUint32 = proto.Uint32(v.(uint32)) case fieldOptionalUint64: m.OptionalUint64 = proto.Uint64(v.(uint64)) case fieldOptionalSint32: m.OptionalSint32 = proto.Int32(v.(int32)) case fieldOptionalSint64: m.OptionalSint64 = proto.Int64(v.(int64)) case fieldOptionalFixed32: m.OptionalFixed32 = proto.Uint32(v.(uint32)) case fieldOptionalFixed64: m.OptionalFixed64 = proto.Uint64(v.(uint64)) case fieldOptionalSfixed32: m.OptionalSfixed32 = proto.Int32(v.(int32)) case fieldOptionalSfixed64: m.OptionalSfixed64 = proto.Int64(v.(int64)) case fieldOptionalFloat: m.OptionalFloat = proto.Float32(v.(float32)) case fieldOptionalDouble: m.OptionalDouble = proto.Float64(v.(float64)) case fieldOptionalBool: m.OptionalBool = proto.Bool(v.(bool)) case fieldOptionalString: m.OptionalString = proto.String(v.(string)) case fieldOptionalBytes: if v.([]byte) == nil { v = []byte{} } m.OptionalBytes = v.([]byte) case fieldNotGroupLikeDelimited: m.NotGroupLikeDelimited = v.(*testpb.TestAllTypes_OptionalGroup) case fieldOptionalGroup: m.Optionalgroup = v.(*testpb.TestAllTypes_OptionalGroup) case fieldOptionalNestedMessage: m.OptionalNestedMessage = v.(*testpb.TestAllTypes_NestedMessage) case fieldOptionalForeignMessage: m.OptionalForeignMessage = v.(*testpb.ForeignMessage) case fieldOptionalImportMessage: m.OptionalImportMessage = v.(*testpb.ImportMessage) case fieldOptionalNestedEnum: m.OptionalNestedEnum = testpb.TestAllTypes_NestedEnum(v.(protoreflect.EnumNumber)).Enum() case fieldOptionalForeignEnum: m.OptionalForeignEnum = testpb.ForeignEnum(v.(protoreflect.EnumNumber)).Enum() case fieldOptionalImportEnum: m.OptionalImportEnum = testpb.ImportEnum(v.(protoreflect.EnumNumber)).Enum() case fieldOptionalLazyNestedMessage: m.OptionalLazyNestedMessage = v.(*testpb.TestAllTypes_NestedMessage) case fieldRepeatedInt32: m.RepeatedInt32 = v.([]int32) case fieldRepeatedInt64: m.RepeatedInt64 = v.([]int64) case fieldRepeatedUint32: m.RepeatedUint32 = v.([]uint32) case fieldRepeatedUint64: m.RepeatedUint64 = v.([]uint64) case fieldRepeatedSint32: m.RepeatedSint32 = v.([]int32) case fieldRepeatedSint64: m.RepeatedSint64 = v.([]int64) case fieldRepeatedFixed32: m.RepeatedFixed32 = v.([]uint32) case fieldRepeatedFixed64: m.RepeatedFixed64 = v.([]uint64) case fieldRepeatedSfixed32: m.RepeatedSfixed32 = v.([]int32) case fieldRepeatedSfixed64: m.RepeatedSfixed64 = v.([]int64) case fieldRepeatedFloat: m.RepeatedFloat = v.([]float32) case fieldRepeatedDouble: m.RepeatedDouble = v.([]float64) case fieldRepeatedBool: m.RepeatedBool = v.([]bool) case fieldRepeatedString: m.RepeatedString = v.([]string) case fieldRepeatedBytes: m.RepeatedBytes = v.([][]byte) case fieldRepeatedGroup: m.Repeatedgroup = v.([]*testpb.TestAllTypes_RepeatedGroup) case fieldRepeatedNestedMessage: m.RepeatedNestedMessage = v.([]*testpb.TestAllTypes_NestedMessage) case fieldRepeatedForeignMessage: m.RepeatedForeignMessage = v.([]*testpb.ForeignMessage) case fieldRepeatedImportMessage: m.RepeatedImportmessage = v.([]*testpb.ImportMessage) case fieldRepeatedNestedEnum: m.RepeatedNestedEnum = v.([]testpb.TestAllTypes_NestedEnum) case fieldRepeatedForeignEnum: m.RepeatedForeignEnum = v.([]testpb.ForeignEnum) case fieldRepeatedImportEnum: m.RepeatedImportenum = v.([]testpb.ImportEnum) case fieldMapInt32Int32: m.MapInt32Int32 = v.(map[int32]int32) case fieldMapInt64Int64: m.MapInt64Int64 = v.(map[int64]int64) case fieldMapUint32Uint32: m.MapUint32Uint32 = v.(map[uint32]uint32) case fieldMapUint64Uint64: m.MapUint64Uint64 = v.(map[uint64]uint64) case fieldMapSint32Sint32: m.MapSint32Sint32 = v.(map[int32]int32) case fieldMapSint64Sint64: m.MapSint64Sint64 = v.(map[int64]int64) case fieldMapFixed32Fixed32: m.MapFixed32Fixed32 = v.(map[uint32]uint32) case fieldMapFixed64Fixed64: m.MapFixed64Fixed64 = v.(map[uint64]uint64) case fieldMapSfixed32Sfixed32: m.MapSfixed32Sfixed32 = v.(map[int32]int32) case fieldMapSfixed64Sfixed64: m.MapSfixed64Sfixed64 = v.(map[int64]int64) case fieldMapInt32Float: m.MapInt32Float = v.(map[int32]float32) case fieldMapInt32Double: m.MapInt32Double = v.(map[int32]float64) case fieldMapBoolBool: m.MapBoolBool = v.(map[bool]bool) case fieldMapStringString: m.MapStringString = v.(map[string]string) case fieldMapStringBytes: m.MapStringBytes = v.(map[string][]byte) case fieldMapStringNestedMessage: m.MapStringNestedMessage = v.(map[string]*testpb.TestAllTypes_NestedMessage) case fieldMapStringNestedEnum: m.MapStringNestedEnum = v.(map[string]testpb.TestAllTypes_NestedEnum) case fieldDefaultInt32: m.DefaultInt32 = proto.Int32(v.(int32)) case fieldDefaultInt64: m.DefaultInt64 = proto.Int64(v.(int64)) case fieldDefaultUint32: m.DefaultUint32 = proto.Uint32(v.(uint32)) case fieldDefaultUint64: m.DefaultUint64 = proto.Uint64(v.(uint64)) case fieldDefaultSint32: m.DefaultSint32 = proto.Int32(v.(int32)) case fieldDefaultSint64: m.DefaultSint64 = proto.Int64(v.(int64)) case fieldDefaultFixed32: m.DefaultFixed32 = proto.Uint32(v.(uint32)) case fieldDefaultFixed64: m.DefaultFixed64 = proto.Uint64(v.(uint64)) case fieldDefaultSfixed32: m.DefaultSfixed32 = proto.Int32(v.(int32)) case fieldDefaultSfixed64: m.DefaultSfixed64 = proto.Int64(v.(int64)) case fieldDefaultFloat: m.DefaultFloat = proto.Float32(v.(float32)) case fieldDefaultDouble: m.DefaultDouble = proto.Float64(v.(float64)) case fieldDefaultBool: m.DefaultBool = proto.Bool(v.(bool)) case fieldDefaultString: m.DefaultString = proto.String(v.(string)) case fieldDefaultBytes: if v.([]byte) == nil { v = []byte{} } m.DefaultBytes = v.([]byte) case fieldDefaultNestedEnum: m.DefaultNestedEnum = testpb.TestAllTypes_NestedEnum(v.(protoreflect.EnumNumber)).Enum() case fieldDefaultForeignEnum: m.DefaultForeignEnum = testpb.ForeignEnum(v.(protoreflect.EnumNumber)).Enum() case fieldOneofUint32: m.OneofField = &testpb.TestAllTypes_OneofUint32{v.(uint32)} case fieldOneofNestedMessage: m.OneofField = &testpb.TestAllTypes_OneofNestedMessage{v.(*testpb.TestAllTypes_NestedMessage)} case fieldOneofString: m.OneofField = &testpb.TestAllTypes_OneofString{v.(string)} case fieldOneofBytes: m.OneofField = &testpb.TestAllTypes_OneofBytes{v.([]byte)} case fieldOneofBool: m.OneofField = &testpb.TestAllTypes_OneofBool{v.(bool)} case fieldOneofUint64: m.OneofField = &testpb.TestAllTypes_OneofUint64{v.(uint64)} case fieldOneofFloat: m.OneofField = &testpb.TestAllTypes_OneofFloat{v.(float32)} case fieldOneofDouble: m.OneofField = &testpb.TestAllTypes_OneofDouble{v.(float64)} case fieldOneofEnum: m.OneofField = &testpb.TestAllTypes_OneofEnum{testpb.TestAllTypes_NestedEnum(v.(protoreflect.EnumNumber))} case fieldOneofGroup: m.OneofField = &testpb.TestAllTypes_Oneofgroup{v.(*testpb.TestAllTypes_OneofGroup)} case fieldOneofOptionalUint32: m.OneofOptional = &testpb.TestAllTypes_OneofOptionalUint32{v.(uint32)} default: panic(fmt.Sprintf("set: unknown field %d", num)) } }, clear: func(num protoreflect.FieldNumber) { switch num { case fieldSingularInt32: m.SingularInt32 = 0 case fieldSingularInt64: m.SingularInt64 = 0 case fieldSingularUint32: m.SingularUint32 = 0 case fieldSingularUint64: m.SingularUint64 = 0 case fieldSingularSint32: m.SingularSint32 = 0 case fieldSingularSint64: m.SingularSint64 = 0 case fieldSingularFixed32: m.SingularFixed32 = 0 case fieldSingularFixed64: m.SingularFixed64 = 0 case fieldSingularSfixed32: m.SingularSfixed32 = 0 case fieldSingularSfixed64: m.SingularSfixed64 = 0 case fieldSingularFloat: m.SingularFloat = 0 case fieldSingularDouble: m.SingularDouble = 0 case fieldSingularBool: m.SingularBool = false case fieldSingularString: m.SingularString = "" case fieldSingularBytes: m.SingularBytes = nil case fieldSingularNestedEnum: m.SingularNestedEnum = testpb.TestAllTypes_FOO case fieldSingularForeignEnum: m.SingularForeignEnum = testpb.ForeignEnum_FOREIGN_ZERO case fieldSingularImportEnum: m.SingularImportEnum = testpb.ImportEnum_IMPORT_ZERO case fieldOptionalInt32: m.OptionalInt32 = nil case fieldOptionalInt64: m.OptionalInt64 = nil case fieldOptionalUint32: m.OptionalUint32 = nil case fieldOptionalUint64: m.OptionalUint64 = nil case fieldOptionalSint32: m.OptionalSint32 = nil case fieldOptionalSint64: m.OptionalSint64 = nil case fieldOptionalFixed32: m.OptionalFixed32 = nil case fieldOptionalFixed64: m.OptionalFixed64 = nil case fieldOptionalSfixed32: m.OptionalSfixed32 = nil case fieldOptionalSfixed64: m.OptionalSfixed64 = nil case fieldOptionalFloat: m.OptionalFloat = nil case fieldOptionalDouble: m.OptionalDouble = nil case fieldOptionalBool: m.OptionalBool = nil case fieldOptionalString: m.OptionalString = nil case fieldOptionalBytes: m.OptionalBytes = nil case fieldOptionalGroup: m.Optionalgroup = nil case fieldNotGroupLikeDelimited: m.NotGroupLikeDelimited = nil case fieldOptionalNestedMessage: m.OptionalNestedMessage = nil case fieldOptionalForeignMessage: m.OptionalForeignMessage = nil case fieldOptionalImportMessage: m.OptionalImportMessage = nil case fieldOptionalNestedEnum: m.OptionalNestedEnum = nil case fieldOptionalForeignEnum: m.OptionalForeignEnum = nil case fieldOptionalImportEnum: m.OptionalImportEnum = nil case fieldOptionalLazyNestedMessage: m.OptionalLazyNestedMessage = nil case fieldRepeatedInt32: m.RepeatedInt32 = nil case fieldRepeatedInt64: m.RepeatedInt64 = nil case fieldRepeatedUint32: m.RepeatedUint32 = nil case fieldRepeatedUint64: m.RepeatedUint64 = nil case fieldRepeatedSint32: m.RepeatedSint32 = nil case fieldRepeatedSint64: m.RepeatedSint64 = nil case fieldRepeatedFixed32: m.RepeatedFixed32 = nil case fieldRepeatedFixed64: m.RepeatedFixed64 = nil case fieldRepeatedSfixed32: m.RepeatedSfixed32 = nil case fieldRepeatedSfixed64: m.RepeatedSfixed64 = nil case fieldRepeatedFloat: m.RepeatedFloat = nil case fieldRepeatedDouble: m.RepeatedDouble = nil case fieldRepeatedBool: m.RepeatedBool = nil case fieldRepeatedString: m.RepeatedString = nil case fieldRepeatedBytes: m.RepeatedBytes = nil case fieldRepeatedGroup: m.Repeatedgroup = nil case fieldRepeatedNestedMessage: m.RepeatedNestedMessage = nil case fieldRepeatedForeignMessage: m.RepeatedForeignMessage = nil case fieldRepeatedImportMessage: m.RepeatedImportmessage = nil case fieldRepeatedNestedEnum: m.RepeatedNestedEnum = nil case fieldRepeatedForeignEnum: m.RepeatedForeignEnum = nil case fieldRepeatedImportEnum: m.RepeatedImportenum = nil case fieldMapInt32Int32: m.MapInt32Int32 = nil case fieldMapInt64Int64: m.MapInt64Int64 = nil case fieldMapUint32Uint32: m.MapUint32Uint32 = nil case fieldMapUint64Uint64: m.MapUint64Uint64 = nil case fieldMapSint32Sint32: m.MapSint32Sint32 = nil case fieldMapSint64Sint64: m.MapSint64Sint64 = nil case fieldMapFixed32Fixed32: m.MapFixed32Fixed32 = nil case fieldMapFixed64Fixed64: m.MapFixed64Fixed64 = nil case fieldMapSfixed32Sfixed32: m.MapSfixed32Sfixed32 = nil case fieldMapSfixed64Sfixed64: m.MapSfixed64Sfixed64 = nil case fieldMapInt32Float: m.MapInt32Float = nil case fieldMapInt32Double: m.MapInt32Double = nil case fieldMapBoolBool: m.MapBoolBool = nil case fieldMapStringString: m.MapStringString = nil case fieldMapStringBytes: m.MapStringBytes = nil case fieldMapStringNestedMessage: m.MapStringNestedMessage = nil case fieldMapStringNestedEnum: m.MapStringNestedEnum = nil case fieldDefaultInt32: m.DefaultInt32 = nil case fieldDefaultInt64: m.DefaultInt64 = nil case fieldDefaultUint32: m.DefaultUint32 = nil case fieldDefaultUint64: m.DefaultUint64 = nil case fieldDefaultSint32: m.DefaultSint32 = nil case fieldDefaultSint64: m.DefaultSint64 = nil case fieldDefaultFixed32: m.DefaultFixed32 = nil case fieldDefaultFixed64: m.DefaultFixed64 = nil case fieldDefaultSfixed32: m.DefaultSfixed32 = nil case fieldDefaultSfixed64: m.DefaultSfixed64 = nil case fieldDefaultFloat: m.DefaultFloat = nil case fieldDefaultDouble: m.DefaultDouble = nil case fieldDefaultBool: m.DefaultBool = nil case fieldDefaultString: m.DefaultString = nil case fieldDefaultBytes: m.DefaultBytes = nil case fieldDefaultNestedEnum: m.DefaultNestedEnum = nil case fieldDefaultForeignEnum: m.DefaultForeignEnum = nil case fieldOneofUint32: m.OneofField = nil case fieldOneofNestedMessage: m.OneofField = nil case fieldOneofString: m.OneofField = nil case fieldOneofBytes: m.OneofField = nil case fieldOneofBool: m.OneofField = nil case fieldOneofUint64: m.OneofField = nil case fieldOneofFloat: m.OneofField = nil case fieldOneofDouble: m.OneofField = nil case fieldOneofEnum: m.OneofField = nil case fieldOneofGroup: m.OneofField = nil case fieldOneofOptionalUint32: m.OneofOptional = nil default: panic(fmt.Sprintf("clear: unknown field %d", num)) } }, } }