internal/impl: add MessageState to every generated message
We define MessageState, which is essentially an atomically set *MessageInfo.
By nesting this as the first field in every generated message, we can
implement the reflective methods on a *MessageState when obtained by
unsafe casting a concrete message pointer as a *MessageState.
The MessageInfo held by MessageState provides additional Go type information
to interpret the memory that comes after the contents of the MessageState.
Since we are nesting a MessageState in every message,
the memory use of every message instance grows by 8B.
On average, the body of ProtoReflect grows from 133B to 202B (+50%).
However, this is offset by XXX_Methods, which is 108B and
will be removed in a future CL. Taking into account the eventual removal
of XXX_Methods, this is a net reduction of 25%.
name old time/op new time/op delta
Name/Value-4 70.3ns ± 2% 17.5ns ± 6% -75.08% (p=0.000 n=10+10)
Name/Nil-4 70.6ns ± 3% 33.4ns ± 2% -52.66% (p=0.000 n=10+10)
name old alloc/op new alloc/op delta
Name/Value-4 16.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10)
Name/Nil-4 16.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
Name/Value-4 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10)
Name/Nil-4 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10)
Change-Id: I92bd58dc681c57c92612fd5ba7fc066aea34e95a
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/185460
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index f8c7e8c..fe2efba 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -222,6 +222,7 @@
}
type TestAllTypes struct {
+ state protoimpl.MessageState
OptionalInt32 *int32 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
OptionalInt64 *int64 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
OptionalUint32 *uint32 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
@@ -327,10 +328,18 @@
func (*TestAllTypes) ProtoMessage() {}
func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[0].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestAllTypes) XXX_Methods() *protoiface.Methods {
+func (x *TestAllTypes) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[0].Methods()
}
@@ -1035,6 +1044,7 @@
// Deprecated: Do not use.
type TestDeprecatedMessage struct {
+ state protoimpl.MessageState
DeprecatedInt32 *int32 `protobuf:"varint,1,opt,name=deprecated_int32,json=deprecatedInt32" json:"deprecated_int32,omitempty"` // Deprecated: Do not use.
// Types that are valid to be assigned to DeprecatedOneof:
// *TestDeprecatedMessage_DeprecatedOneofField
@@ -1054,10 +1064,18 @@
func (*TestDeprecatedMessage) ProtoMessage() {}
func (x *TestDeprecatedMessage) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[1].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestDeprecatedMessage) XXX_Methods() *protoiface.Methods {
+func (x *TestDeprecatedMessage) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[1].Methods()
}
@@ -1100,6 +1118,7 @@
func (*TestDeprecatedMessage_DeprecatedOneofField) isTestDeprecatedMessage_DeprecatedOneof() {}
type ForeignMessage struct {
+ state protoimpl.MessageState
C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
D *int32 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
sizeCache protoimpl.SizeCache
@@ -1117,10 +1136,18 @@
func (*ForeignMessage) ProtoMessage() {}
func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[2].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *ForeignMessage) XXX_Methods() *protoiface.Methods {
+func (x *ForeignMessage) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[2].Methods()
}
@@ -1144,6 +1171,7 @@
}
type TestReservedFields struct {
+ state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
@@ -1159,10 +1187,18 @@
func (*TestReservedFields) ProtoMessage() {}
func (x *TestReservedFields) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[3].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestReservedFields) XXX_Methods() *protoiface.Methods {
+func (x *TestReservedFields) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[3].Methods()
}
@@ -1172,6 +1208,7 @@
}
type TestAllExtensions struct {
+ state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
extensionFields protoimpl.ExtensionFields
@@ -1188,10 +1225,18 @@
func (*TestAllExtensions) ProtoMessage() {}
func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[4].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestAllExtensions) XXX_Methods() *protoiface.Methods {
+func (x *TestAllExtensions) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[4].Methods()
}
@@ -1210,6 +1255,7 @@
}
type OptionalGroupExtension struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1226,10 +1272,18 @@
func (*OptionalGroupExtension) ProtoMessage() {}
func (x *OptionalGroupExtension) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[5].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *OptionalGroupExtension) XXX_Methods() *protoiface.Methods {
+func (x *OptionalGroupExtension) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[5].Methods()
}
@@ -1246,6 +1300,7 @@
}
type RepeatedGroupExtension struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1262,10 +1317,18 @@
func (*RepeatedGroupExtension) ProtoMessage() {}
func (x *RepeatedGroupExtension) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[6].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *RepeatedGroupExtension) XXX_Methods() *protoiface.Methods {
+func (x *RepeatedGroupExtension) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[6].Methods()
}
@@ -1282,6 +1345,7 @@
}
type TestNestedExtension struct {
+ state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
@@ -1297,10 +1361,18 @@
func (*TestNestedExtension) ProtoMessage() {}
func (x *TestNestedExtension) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[7].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestNestedExtension) XXX_Methods() *protoiface.Methods {
+func (x *TestNestedExtension) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[7].Methods()
}
@@ -1310,6 +1382,7 @@
}
type TestRequired struct {
+ state protoimpl.MessageState
RequiredField *int32 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1326,10 +1399,18 @@
func (*TestRequired) ProtoMessage() {}
func (x *TestRequired) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[8].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestRequired) XXX_Methods() *protoiface.Methods {
+func (x *TestRequired) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[8].Methods()
}
@@ -1346,6 +1427,7 @@
}
type TestRequiredForeign struct {
+ state protoimpl.MessageState
OptionalMessage *TestRequired `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
RepeatedMessage []*TestRequired `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
MapMessage map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
@@ -1367,10 +1449,18 @@
func (*TestRequiredForeign) ProtoMessage() {}
func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[9].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestRequiredForeign) XXX_Methods() *protoiface.Methods {
+func (x *TestRequiredForeign) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[9].Methods()
}
@@ -1425,6 +1515,7 @@
func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
type TestRequiredGroupFields struct {
+ state protoimpl.MessageState
Optionalgroup *TestRequiredGroupFields_OptionalGroup `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
sizeCache protoimpl.SizeCache
@@ -1442,10 +1533,18 @@
func (*TestRequiredGroupFields) ProtoMessage() {}
func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[10].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestRequiredGroupFields) XXX_Methods() *protoiface.Methods {
+func (x *TestRequiredGroupFields) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[10].Methods()
}
@@ -1469,6 +1568,7 @@
}
type TestWeak struct {
+ state protoimpl.MessageState
WeakMessage *weak.WeakImportMessage `protobuf:"bytes,1,opt,weak=goproto.proto.test.weak.WeakImportMessage,name=weak_message,json=weakMessage" json:"weak_message,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1485,10 +1585,18 @@
func (*TestWeak) ProtoMessage() {}
func (x *TestWeak) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[11].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestWeak) XXX_Methods() *protoiface.Methods {
+func (x *TestWeak) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[11].Methods()
}
@@ -1506,6 +1614,7 @@
// Test that RPC services work.
type FooRequest struct {
+ state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
@@ -1521,10 +1630,18 @@
func (*FooRequest) ProtoMessage() {}
func (x *FooRequest) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[12].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *FooRequest) XXX_Methods() *protoiface.Methods {
+func (x *FooRequest) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[12].Methods()
}
@@ -1534,6 +1651,7 @@
}
type FooResponse struct {
+ state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
@@ -1549,10 +1667,18 @@
func (*FooResponse) ProtoMessage() {}
func (x *FooResponse) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[13].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *FooResponse) XXX_Methods() *protoiface.Methods {
+func (x *FooResponse) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[13].Methods()
}
@@ -1562,6 +1688,7 @@
}
type TestAllTypes_NestedMessage struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
sizeCache protoimpl.SizeCache
@@ -1579,10 +1706,18 @@
func (*TestAllTypes_NestedMessage) ProtoMessage() {}
func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[14].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestAllTypes_NestedMessage) XXX_Methods() *protoiface.Methods {
+func (x *TestAllTypes_NestedMessage) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[14].Methods()
}
@@ -1606,6 +1741,7 @@
}
type TestAllTypes_OptionalGroup struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1622,10 +1758,18 @@
func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[15].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestAllTypes_OptionalGroup) XXX_Methods() *protoiface.Methods {
+func (x *TestAllTypes_OptionalGroup) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[15].Methods()
}
@@ -1642,6 +1786,7 @@
}
type TestAllTypes_RepeatedGroup struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1658,10 +1803,18 @@
func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[16].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestAllTypes_RepeatedGroup) XXX_Methods() *protoiface.Methods {
+func (x *TestAllTypes_RepeatedGroup) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[16].Methods()
}
@@ -1678,6 +1831,7 @@
}
type TestRequiredGroupFields_OptionalGroup struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1694,10 +1848,18 @@
func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[35].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[35]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestRequiredGroupFields_OptionalGroup) XXX_Methods() *protoiface.Methods {
+func (x *TestRequiredGroupFields_OptionalGroup) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[35].Methods()
}
@@ -1714,6 +1876,7 @@
}
type TestRequiredGroupFields_RepeatedGroup struct {
+ state protoimpl.MessageState
A *int32 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1730,10 +1893,18 @@
func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
- return file_test_test_proto_msgTypes[36].MessageOf(x)
+ mi := &file_test_test_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (m *TestRequiredGroupFields_RepeatedGroup) XXX_Methods() *protoiface.Methods {
+func (x *TestRequiredGroupFields_RepeatedGroup) XXX_Methods() *protoiface.Methods {
return file_test_test_proto_msgTypes[36].Methods()
}
@@ -3459,9 +3630,11 @@
if !protoimpl.UnsafeEnabled {
file_test_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestAllTypes); i {
- case 79:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 80:
+ return &v.sizeCache
+ case 81:
return &v.unknownFields
default:
return nil
@@ -3469,9 +3642,11 @@
}
file_test_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestDeprecatedMessage); i {
- case 2:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 3:
+ return &v.sizeCache
+ case 4:
return &v.unknownFields
default:
return nil
@@ -3479,9 +3654,11 @@
}
file_test_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ForeignMessage); i {
- case 2:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 3:
+ return &v.sizeCache
+ case 4:
return &v.unknownFields
default:
return nil
@@ -3490,8 +3667,10 @@
file_test_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestReservedFields); i {
case 0:
- return &v.sizeCache
+ return &v.state
case 1:
+ return &v.sizeCache
+ case 2:
return &v.unknownFields
default:
return nil
@@ -3500,10 +3679,12 @@
file_test_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestAllExtensions); i {
case 0:
- return &v.sizeCache
+ return &v.state
case 1:
- return &v.unknownFields
+ return &v.sizeCache
case 2:
+ return &v.unknownFields
+ case 3:
return &v.extensionFields
default:
return nil
@@ -3511,9 +3692,11 @@
}
file_test_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*OptionalGroupExtension); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil
@@ -3521,9 +3704,11 @@
}
file_test_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RepeatedGroupExtension); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil
@@ -3532,15 +3717,7 @@
file_test_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestNestedExtension); i {
case 0:
- return &v.sizeCache
- case 1:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_test_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestRequired); i {
+ return &v.state
case 1:
return &v.sizeCache
case 2:
@@ -3549,18 +3726,10 @@
return nil
}
}
- file_test_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestRequiredForeign); i {
- case 4:
- return &v.sizeCache
- case 5:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_test_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestRequiredGroupFields); i {
+ file_test_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TestRequired); i {
+ case 0:
+ return &v.state
case 2:
return &v.sizeCache
case 3:
@@ -3569,11 +3738,37 @@
return nil
}
}
+ file_test_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TestRequiredForeign); i {
+ case 0:
+ return &v.state
+ case 5:
+ return &v.sizeCache
+ case 6:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_test_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TestRequiredGroupFields); i {
+ case 0:
+ return &v.state
+ case 3:
+ return &v.sizeCache
+ case 4:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
file_test_test_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestWeak); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil
@@ -3582,8 +3777,10 @@
file_test_test_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FooRequest); i {
case 0:
- return &v.sizeCache
+ return &v.state
case 1:
+ return &v.sizeCache
+ case 2:
return &v.unknownFields
default:
return nil
@@ -3592,8 +3789,10 @@
file_test_test_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FooResponse); i {
case 0:
- return &v.sizeCache
+ return &v.state
case 1:
+ return &v.sizeCache
+ case 2:
return &v.unknownFields
default:
return nil
@@ -3601,6 +3800,20 @@
}
file_test_test_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestAllTypes_NestedMessage); i {
+ case 0:
+ return &v.state
+ case 3:
+ return &v.sizeCache
+ case 4:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_test_test_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TestAllTypes_OptionalGroup); i {
+ case 0:
+ return &v.state
case 2:
return &v.sizeCache
case 3:
@@ -3609,21 +3822,13 @@
return nil
}
}
- file_test_test_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestAllTypes_OptionalGroup); i {
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
file_test_test_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestAllTypes_RepeatedGroup); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil
@@ -3631,9 +3836,11 @@
}
file_test_test_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestRequiredGroupFields_OptionalGroup); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil
@@ -3641,9 +3848,11 @@
}
file_test_test_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestRequiredGroupFields_RepeatedGroup); i {
- case 1:
- return &v.sizeCache
+ case 0:
+ return &v.state
case 2:
+ return &v.sizeCache
+ case 3:
return &v.unknownFields
default:
return nil