blob: fc88620e77363949584b845365a1336bd111edc2 [file] [log] [blame]
// 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"
"testing"
testpb "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque"
"google.golang.org/protobuf/reflect/protoreflect"
)
func TestLargeOpaqueConcrete(t *testing.T) {
for _, tt := range lazyCombinations {
t.Run(tt.desc, func(t *testing.T) {
tt.ptm.Test(t, newTestMessageLargeOpaque(nil).ProtoReflect().Type())
})
}
}
func TestLargeOpaqueReflection(t *testing.T) {
for _, tt := range lazyCombinations {
t.Run(tt.desc, func(t *testing.T) {
tt.ptm.Test(t, (*testpb.TestManyMessageFieldsMessage)(nil).ProtoReflect().Type())
})
}
}
func TestLargeOpaqueShadow_GetConcrete_SetReflection(t *testing.T) {
for _, tt := range lazyCombinations {
t.Run(tt.desc, func(t *testing.T) {
tt.ptm.Test(t, newShadow(func() (get, set protoreflect.ProtoMessage) {
m := &testpb.TestManyMessageFieldsMessage{}
return newTestMessageLargeOpaque(m), m
}).ProtoReflect().Type())
})
}
}
func TestLargeOpaqueShadow_GetReflection_SetConcrete(t *testing.T) {
for _, tt := range lazyCombinations {
t.Run(tt.desc, func(t *testing.T) {
tt.ptm.Test(t, newShadow(func() (get, set protoreflect.ProtoMessage) {
m := &testpb.TestManyMessageFieldsMessage{}
return m, newTestMessageLargeOpaque(m)
}).ProtoReflect().Type())
})
}
}
func newTestMessageLargeOpaque(m *testpb.TestManyMessageFieldsMessage) protoreflect.ProtoMessage {
return &testProtoMessage{
m: m,
md: m.ProtoReflect().Descriptor(),
new: func() protoreflect.Message {
return newTestMessageLargeOpaque(&testpb.TestManyMessageFieldsMessage{}).ProtoReflect()
},
has: func(num protoreflect.FieldNumber) bool {
switch num {
case largeFieldF1:
return m.HasF1()
case largeFieldF2:
return m.HasF2()
case largeFieldF3:
return m.HasF3()
case largeFieldF4:
return m.HasF4()
case largeFieldF5:
return m.HasF5()
case largeFieldF6:
return m.HasF6()
case largeFieldF7:
return m.HasF7()
case largeFieldF8:
return m.HasF8()
case largeFieldF9:
return m.HasF9()
case largeFieldF10:
return m.HasF10()
case largeFieldF11:
return m.HasF11()
case largeFieldF12:
return m.HasF12()
case largeFieldF13:
return m.HasF13()
case largeFieldF14:
return m.HasF14()
case largeFieldF15:
return m.HasF15()
case largeFieldF16:
return m.HasF16()
case largeFieldF17:
return m.HasF17()
case largeFieldF18:
return m.HasF18()
case largeFieldF19:
return m.HasF19()
case largeFieldF20:
return m.HasF20()
case largeFieldF21:
return m.HasF21()
case largeFieldF22:
return m.HasF22()
case largeFieldF23:
return m.HasF23()
case largeFieldF24:
return m.HasF24()
case largeFieldF25:
return m.HasF25()
case largeFieldF26:
return m.HasF26()
case largeFieldF27:
return m.HasF27()
case largeFieldF28:
return m.HasF28()
case largeFieldF29:
return m.HasF29()
case largeFieldF30:
return m.HasF30()
case largeFieldF31:
return m.HasF31()
case largeFieldF32:
return m.HasF32()
case largeFieldF33:
return m.HasF33()
case largeFieldF34:
return m.HasF34()
case largeFieldF35:
return m.HasF35()
case largeFieldF36:
return m.HasF36()
case largeFieldF37:
return m.HasF37()
case largeFieldF38:
return m.HasF38()
case largeFieldF39:
return m.HasF39()
case largeFieldF40:
return m.HasF40()
case largeFieldF41:
return m.HasF41()
case largeFieldF42:
return m.HasF42()
case largeFieldF43:
return m.HasF43()
case largeFieldF44:
return m.HasF44()
case largeFieldF45:
return m.HasF45()
case largeFieldF46:
return m.HasF46()
case largeFieldF47:
return m.HasF47()
case largeFieldF48:
return m.HasF48()
case largeFieldF49:
return m.HasF49()
case largeFieldF50:
return m.HasF50()
case largeFieldF51:
return m.HasF51()
case largeFieldF52:
return m.HasF52()
case largeFieldF53:
return m.HasF53()
case largeFieldF54:
return m.HasF54()
case largeFieldF55:
return m.HasF55()
case largeFieldF56:
return m.HasF56()
case largeFieldF57:
return m.HasF57()
case largeFieldF58:
return m.HasF58()
case largeFieldF59:
return m.HasF59()
case largeFieldF60:
return m.HasF60()
case largeFieldF60:
return m.HasF60()
case largeFieldF61:
return m.HasF61()
case largeFieldF62:
return m.HasF62()
case largeFieldF63:
return m.HasF63()
case largeFieldF64:
return m.HasF64()
case largeFieldF65:
return m.HasF65()
case largeFieldF66:
return m.HasF66()
case largeFieldF67:
return m.HasF67()
case largeFieldF68:
return m.HasF68()
case largeFieldF69:
return m.HasF69()
case largeFieldF70:
return m.HasF70()
case largeFieldF71:
return m.HasF71()
case largeFieldF72:
return m.HasF72()
case largeFieldF73:
return m.HasF73()
case largeFieldF74:
return m.HasF74()
case largeFieldF75:
return m.HasF75()
case largeFieldF76:
return m.HasF76()
case largeFieldF77:
return m.HasF77()
case largeFieldF78:
return m.HasF78()
case largeFieldF79:
return m.HasF79()
case largeFieldF80:
return m.HasF80()
case largeFieldF81:
return m.HasF81()
case largeFieldF82:
return m.HasF82()
case largeFieldF83:
return m.HasF83()
case largeFieldF84:
return m.HasF84()
case largeFieldF85:
return m.HasF85()
case largeFieldF86:
return m.HasF86()
case largeFieldF87:
return m.HasF87()
case largeFieldF88:
return m.HasF88()
case largeFieldF89:
return m.HasF89()
case largeFieldF90:
return m.HasF90()
case largeFieldF91:
return m.HasF91()
case largeFieldF92:
return m.HasF92()
case largeFieldF93:
return m.HasF93()
case largeFieldF94:
return m.HasF94()
case largeFieldF95:
return m.HasF95()
case largeFieldF96:
return m.HasF96()
case largeFieldF97:
return m.HasF97()
case largeFieldF98:
return m.HasF98()
case largeFieldF99:
return m.HasF99()
case largeFieldF100:
return m.HasF100()
default:
panic(fmt.Sprintf("has: unknown field %d", num))
}
},
get: func(num protoreflect.FieldNumber) any {
switch num {
case largeFieldF1:
return m.GetF1()
case largeFieldF2:
return m.GetF2()
case largeFieldF3:
return m.GetF3()
case largeFieldF4:
return m.GetF4()
case largeFieldF5:
return m.GetF5()
case largeFieldF6:
return m.GetF6()
case largeFieldF7:
return m.GetF7()
case largeFieldF8:
return m.GetF8()
case largeFieldF9:
return m.GetF9()
case largeFieldF10:
return m.GetF10()
case largeFieldF11:
return m.GetF11()
case largeFieldF12:
return m.GetF12()
case largeFieldF13:
return m.GetF13()
case largeFieldF14:
return m.GetF14()
case largeFieldF15:
return m.GetF15()
case largeFieldF16:
return m.GetF16()
case largeFieldF17:
return m.GetF17()
case largeFieldF18:
return m.GetF18()
case largeFieldF19:
return m.GetF19()
case largeFieldF20:
return m.GetF20()
case largeFieldF21:
return m.GetF21()
case largeFieldF22:
return m.GetF22()
case largeFieldF23:
return m.GetF23()
case largeFieldF24:
return m.GetF24()
case largeFieldF25:
return m.GetF25()
case largeFieldF26:
return m.GetF26()
case largeFieldF27:
return m.GetF27()
case largeFieldF28:
return m.GetF28()
case largeFieldF29:
return m.GetF29()
case largeFieldF30:
return m.GetF30()
case largeFieldF31:
return m.GetF31()
case largeFieldF32:
return m.GetF32()
case largeFieldF33:
return m.GetF33()
case largeFieldF34:
return m.GetF34()
case largeFieldF35:
return m.GetF35()
case largeFieldF36:
return m.GetF36()
case largeFieldF37:
return m.GetF37()
case largeFieldF38:
return m.GetF38()
case largeFieldF39:
return m.GetF39()
case largeFieldF40:
return m.GetF40()
case largeFieldF41:
return m.GetF41()
case largeFieldF42:
return m.GetF42()
case largeFieldF43:
return m.GetF43()
case largeFieldF44:
return m.GetF44()
case largeFieldF45:
return m.GetF45()
case largeFieldF46:
return m.GetF46()
case largeFieldF47:
return m.GetF47()
case largeFieldF48:
return m.GetF48()
case largeFieldF49:
return m.GetF49()
case largeFieldF50:
return m.GetF50()
case largeFieldF51:
return m.GetF51()
case largeFieldF52:
return m.GetF52()
case largeFieldF53:
return m.GetF53()
case largeFieldF54:
return m.GetF54()
case largeFieldF55:
return m.GetF55()
case largeFieldF56:
return m.GetF56()
case largeFieldF57:
return m.GetF57()
case largeFieldF58:
return m.GetF58()
case largeFieldF59:
return m.GetF59()
case largeFieldF60:
return m.GetF60()
case largeFieldF61:
return m.GetF61()
case largeFieldF62:
return m.GetF62()
case largeFieldF63:
return m.GetF63()
case largeFieldF64:
return m.GetF64()
case largeFieldF65:
return m.GetF65()
case largeFieldF66:
return m.GetF66()
case largeFieldF67:
return m.GetF67()
case largeFieldF68:
return m.GetF68()
case largeFieldF69:
return m.GetF69()
case largeFieldF70:
return m.GetF70()
case largeFieldF71:
return m.GetF71()
case largeFieldF72:
return m.GetF72()
case largeFieldF73:
return m.GetF73()
case largeFieldF74:
return m.GetF74()
case largeFieldF75:
return m.GetF75()
case largeFieldF76:
return m.GetF76()
case largeFieldF77:
return m.GetF77()
case largeFieldF78:
return m.GetF78()
case largeFieldF79:
return m.GetF79()
case largeFieldF80:
return m.GetF80()
case largeFieldF81:
return m.GetF81()
case largeFieldF82:
return m.GetF82()
case largeFieldF83:
return m.GetF83()
case largeFieldF84:
return m.GetF84()
case largeFieldF85:
return m.GetF85()
case largeFieldF86:
return m.GetF86()
case largeFieldF87:
return m.GetF87()
case largeFieldF88:
return m.GetF88()
case largeFieldF89:
return m.GetF89()
case largeFieldF90:
return m.GetF90()
case largeFieldF91:
return m.GetF91()
case largeFieldF92:
return m.GetF92()
case largeFieldF93:
return m.GetF93()
case largeFieldF94:
return m.GetF94()
case largeFieldF95:
return m.GetF95()
case largeFieldF96:
return m.GetF96()
case largeFieldF97:
return m.GetF97()
case largeFieldF98:
return m.GetF98()
case largeFieldF99:
return m.GetF99()
case largeFieldF100:
return m.GetF100()
default:
panic(fmt.Sprintf("get: unknown field %d", num))
}
},
set: func(num protoreflect.FieldNumber, v any) {
switch num {
case largeFieldF1:
m.SetF1(v.(*testpb.TestAllTypes))
case largeFieldF2:
m.SetF2(v.(*testpb.TestAllTypes))
case largeFieldF3:
m.SetF3(v.(*testpb.TestAllTypes))
case largeFieldF4:
m.SetF4(v.(*testpb.TestAllTypes))
case largeFieldF5:
m.SetF5(v.(*testpb.TestAllTypes))
case largeFieldF6:
m.SetF6(v.(*testpb.TestAllTypes))
case largeFieldF7:
m.SetF7(v.(*testpb.TestAllTypes))
case largeFieldF8:
m.SetF8(v.(*testpb.TestAllTypes))
case largeFieldF9:
m.SetF9(v.(*testpb.TestAllTypes))
case largeFieldF10:
m.SetF10(v.(*testpb.TestAllTypes))
case largeFieldF11:
m.SetF11(v.(*testpb.TestAllTypes))
case largeFieldF12:
m.SetF12(v.(*testpb.TestAllTypes))
case largeFieldF13:
m.SetF13(v.(*testpb.TestAllTypes))
case largeFieldF14:
m.SetF14(v.(*testpb.TestAllTypes))
case largeFieldF15:
m.SetF15(v.(*testpb.TestAllTypes))
case largeFieldF16:
m.SetF16(v.(*testpb.TestAllTypes))
case largeFieldF17:
m.SetF17(v.(*testpb.TestAllTypes))
case largeFieldF18:
m.SetF18(v.(*testpb.TestAllTypes))
case largeFieldF19:
m.SetF19(v.(*testpb.TestAllTypes))
case largeFieldF20:
m.SetF20(v.(*testpb.TestAllTypes))
case largeFieldF21:
m.SetF21(v.(*testpb.TestAllTypes))
case largeFieldF22:
m.SetF22(v.(*testpb.TestAllTypes))
case largeFieldF23:
m.SetF23(v.(*testpb.TestAllTypes))
case largeFieldF24:
m.SetF24(v.(*testpb.TestAllTypes))
case largeFieldF25:
m.SetF25(v.(*testpb.TestAllTypes))
case largeFieldF26:
m.SetF26(v.(*testpb.TestAllTypes))
case largeFieldF27:
m.SetF27(v.(*testpb.TestAllTypes))
case largeFieldF28:
m.SetF28(v.(*testpb.TestAllTypes))
case largeFieldF29:
m.SetF29(v.(*testpb.TestAllTypes))
case largeFieldF30:
m.SetF30(v.(*testpb.TestAllTypes))
case largeFieldF31:
m.SetF31(v.(*testpb.TestAllTypes))
case largeFieldF32:
m.SetF32(v.(*testpb.TestAllTypes))
case largeFieldF33:
m.SetF33(v.(*testpb.TestAllTypes))
case largeFieldF34:
m.SetF34(v.(*testpb.TestAllTypes))
case largeFieldF35:
m.SetF35(v.(*testpb.TestAllTypes))
case largeFieldF36:
m.SetF36(v.(*testpb.TestAllTypes))
case largeFieldF37:
m.SetF37(v.(*testpb.TestAllTypes))
case largeFieldF38:
m.SetF38(v.(*testpb.TestAllTypes))
case largeFieldF39:
m.SetF39(v.(*testpb.TestAllTypes))
case largeFieldF40:
m.SetF40(v.(*testpb.TestAllTypes))
case largeFieldF41:
m.SetF41(v.(*testpb.TestAllTypes))
case largeFieldF42:
m.SetF42(v.(*testpb.TestAllTypes))
case largeFieldF43:
m.SetF43(v.(*testpb.TestAllTypes))
case largeFieldF44:
m.SetF44(v.(*testpb.TestAllTypes))
case largeFieldF45:
m.SetF45(v.(*testpb.TestAllTypes))
case largeFieldF46:
m.SetF46(v.(*testpb.TestAllTypes))
case largeFieldF47:
m.SetF47(v.(*testpb.TestAllTypes))
case largeFieldF48:
m.SetF48(v.(*testpb.TestAllTypes))
case largeFieldF49:
m.SetF49(v.(*testpb.TestAllTypes))
case largeFieldF50:
m.SetF50(v.(*testpb.TestAllTypes))
case largeFieldF51:
m.SetF51(v.(*testpb.TestAllTypes))
case largeFieldF52:
m.SetF52(v.(*testpb.TestAllTypes))
case largeFieldF53:
m.SetF53(v.(*testpb.TestAllTypes))
case largeFieldF54:
m.SetF54(v.(*testpb.TestAllTypes))
case largeFieldF55:
m.SetF55(v.(*testpb.TestAllTypes))
case largeFieldF56:
m.SetF56(v.(*testpb.TestAllTypes))
case largeFieldF57:
m.SetF57(v.(*testpb.TestAllTypes))
case largeFieldF58:
m.SetF58(v.(*testpb.TestAllTypes))
case largeFieldF59:
m.SetF59(v.(*testpb.TestAllTypes))
case largeFieldF60:
m.SetF60(v.(*testpb.TestAllTypes))
case largeFieldF61:
m.SetF61(v.(*testpb.TestAllTypes))
case largeFieldF62:
m.SetF62(v.(*testpb.TestAllTypes))
case largeFieldF63:
m.SetF63(v.(*testpb.TestAllTypes))
case largeFieldF64:
m.SetF64(v.(*testpb.TestAllTypes))
case largeFieldF65:
m.SetF65(v.(*testpb.TestAllTypes))
case largeFieldF66:
m.SetF66(v.(*testpb.TestAllTypes))
case largeFieldF67:
m.SetF67(v.(*testpb.TestAllTypes))
case largeFieldF68:
m.SetF68(v.(*testpb.TestAllTypes))
case largeFieldF69:
m.SetF69(v.(*testpb.TestAllTypes))
case largeFieldF70:
m.SetF70(v.(*testpb.TestAllTypes))
case largeFieldF71:
m.SetF71(v.(*testpb.TestAllTypes))
case largeFieldF72:
m.SetF72(v.(*testpb.TestAllTypes))
case largeFieldF73:
m.SetF73(v.(*testpb.TestAllTypes))
case largeFieldF74:
m.SetF74(v.(*testpb.TestAllTypes))
case largeFieldF75:
m.SetF75(v.(*testpb.TestAllTypes))
case largeFieldF76:
m.SetF76(v.(*testpb.TestAllTypes))
case largeFieldF77:
m.SetF77(v.(*testpb.TestAllTypes))
case largeFieldF78:
m.SetF78(v.(*testpb.TestAllTypes))
case largeFieldF79:
m.SetF79(v.(*testpb.TestAllTypes))
case largeFieldF80:
m.SetF80(v.(*testpb.TestAllTypes))
case largeFieldF81:
m.SetF81(v.(*testpb.TestAllTypes))
case largeFieldF82:
m.SetF82(v.(*testpb.TestAllTypes))
case largeFieldF83:
m.SetF83(v.(*testpb.TestAllTypes))
case largeFieldF84:
m.SetF84(v.(*testpb.TestAllTypes))
case largeFieldF85:
m.SetF85(v.(*testpb.TestAllTypes))
case largeFieldF86:
m.SetF86(v.(*testpb.TestAllTypes))
case largeFieldF87:
m.SetF87(v.(*testpb.TestAllTypes))
case largeFieldF88:
m.SetF88(v.(*testpb.TestAllTypes))
case largeFieldF89:
m.SetF89(v.(*testpb.TestAllTypes))
case largeFieldF90:
m.SetF90(v.(*testpb.TestAllTypes))
case largeFieldF91:
m.SetF91(v.(*testpb.TestAllTypes))
case largeFieldF92:
m.SetF92(v.(*testpb.TestAllTypes))
case largeFieldF93:
m.SetF93(v.(*testpb.TestAllTypes))
case largeFieldF94:
m.SetF94(v.(*testpb.TestAllTypes))
case largeFieldF95:
m.SetF95(v.(*testpb.TestAllTypes))
case largeFieldF96:
m.SetF96(v.(*testpb.TestAllTypes))
case largeFieldF97:
m.SetF97(v.(*testpb.TestAllTypes))
case largeFieldF98:
m.SetF98(v.(*testpb.TestAllTypes))
case largeFieldF99:
m.SetF99(v.(*testpb.TestAllTypes))
case largeFieldF100:
m.SetF100(v.(*testpb.TestAllTypes))
default:
panic(fmt.Sprintf("set: unknown field %d", num))
}
},
clear: func(num protoreflect.FieldNumber) {
switch num {
case largeFieldF1:
m.ClearF1()
case largeFieldF2:
m.ClearF2()
case largeFieldF3:
m.ClearF3()
case largeFieldF4:
m.ClearF4()
case largeFieldF5:
m.ClearF5()
case largeFieldF6:
m.ClearF6()
case largeFieldF7:
m.ClearF7()
case largeFieldF8:
m.ClearF8()
case largeFieldF9:
m.ClearF9()
case largeFieldF10:
m.ClearF10()
case largeFieldF11:
m.ClearF11()
case largeFieldF12:
m.ClearF12()
case largeFieldF13:
m.ClearF13()
case largeFieldF14:
m.ClearF14()
case largeFieldF15:
m.ClearF15()
case largeFieldF16:
m.ClearF16()
case largeFieldF17:
m.ClearF17()
case largeFieldF18:
m.ClearF18()
case largeFieldF19:
m.ClearF19()
case largeFieldF20:
m.ClearF20()
case largeFieldF21:
m.ClearF21()
case largeFieldF22:
m.ClearF22()
case largeFieldF23:
m.ClearF23()
case largeFieldF24:
m.ClearF24()
case largeFieldF25:
m.ClearF25()
case largeFieldF26:
m.ClearF26()
case largeFieldF27:
m.ClearF27()
case largeFieldF28:
m.ClearF28()
case largeFieldF29:
m.ClearF29()
case largeFieldF30:
m.ClearF30()
case largeFieldF31:
m.ClearF31()
case largeFieldF32:
m.ClearF32()
case largeFieldF33:
m.ClearF33()
case largeFieldF34:
m.ClearF34()
case largeFieldF35:
m.ClearF35()
case largeFieldF36:
m.ClearF36()
case largeFieldF37:
m.ClearF37()
case largeFieldF38:
m.ClearF38()
case largeFieldF39:
m.ClearF39()
case largeFieldF40:
m.ClearF40()
case largeFieldF41:
m.ClearF41()
case largeFieldF42:
m.ClearF42()
case largeFieldF43:
m.ClearF43()
case largeFieldF44:
m.ClearF44()
case largeFieldF45:
m.ClearF45()
case largeFieldF46:
m.ClearF46()
case largeFieldF47:
m.ClearF47()
case largeFieldF48:
m.ClearF48()
case largeFieldF49:
m.ClearF49()
case largeFieldF50:
m.ClearF50()
case largeFieldF51:
m.ClearF51()
case largeFieldF52:
m.ClearF52()
case largeFieldF53:
m.ClearF53()
case largeFieldF54:
m.ClearF54()
case largeFieldF55:
m.ClearF55()
case largeFieldF56:
m.ClearF56()
case largeFieldF57:
m.ClearF57()
case largeFieldF58:
m.ClearF58()
case largeFieldF59:
m.ClearF59()
case largeFieldF60:
m.ClearF60()
case largeFieldF60:
m.ClearF60()
case largeFieldF61:
m.ClearF61()
case largeFieldF62:
m.ClearF62()
case largeFieldF63:
m.ClearF63()
case largeFieldF64:
m.ClearF64()
case largeFieldF65:
m.ClearF65()
case largeFieldF66:
m.ClearF66()
case largeFieldF67:
m.ClearF67()
case largeFieldF68:
m.ClearF68()
case largeFieldF69:
m.ClearF69()
case largeFieldF70:
m.ClearF70()
case largeFieldF71:
m.ClearF71()
case largeFieldF72:
m.ClearF72()
case largeFieldF73:
m.ClearF73()
case largeFieldF74:
m.ClearF74()
case largeFieldF75:
m.ClearF75()
case largeFieldF76:
m.ClearF76()
case largeFieldF77:
m.ClearF77()
case largeFieldF78:
m.ClearF78()
case largeFieldF79:
m.ClearF79()
case largeFieldF80:
m.ClearF80()
case largeFieldF81:
m.ClearF81()
case largeFieldF82:
m.ClearF82()
case largeFieldF83:
m.ClearF83()
case largeFieldF84:
m.ClearF84()
case largeFieldF85:
m.ClearF85()
case largeFieldF86:
m.ClearF86()
case largeFieldF87:
m.ClearF87()
case largeFieldF88:
m.ClearF88()
case largeFieldF89:
m.ClearF89()
case largeFieldF90:
m.ClearF90()
case largeFieldF91:
m.ClearF91()
case largeFieldF92:
m.ClearF92()
case largeFieldF93:
m.ClearF93()
case largeFieldF94:
m.ClearF94()
case largeFieldF95:
m.ClearF95()
case largeFieldF96:
m.ClearF96()
case largeFieldF97:
m.ClearF97()
case largeFieldF98:
m.ClearF98()
case largeFieldF99:
m.ClearF99()
case largeFieldF100:
m.ClearF100()
default:
panic(fmt.Sprintf("clear: unknown field %d", num))
}
},
}
}