From dbf77c65c45d338bd57814d7261d748e9db8e1eb Mon Sep 17 00:00:00 2001 From: Sydney Acksman Date: Mon, 11 Feb 2019 17:12:40 -0600 Subject: [PATCH] Refactor how group endings are detected in generated C# code (#5686) * Modify how end tags are encounted in merge code (compiler) * Modify how end tags are encounted in merge code (generated) * Modify how end tags are encounted in merge code (library) * Regenerate generated code through generate_descriptor_proto.sh --- csharp/src/AddressBook/Addressbook.cs | 12 +- .../Conformance.cs | 16 +- .../TestProtos/MapUnittestProto3.cs | 28 +--- .../TestProtos/TestMessagesProto3.cs | 12 +- .../TestProtos/UnittestCustomOptionsProto3.cs | 84 +++------- .../TestProtos/UnittestImportProto3.cs | 4 +- .../TestProtos/UnittestImportPublicProto3.cs | 4 +- .../TestProtos/UnittestIssues.cs | 52 ++---- .../TestProtos/UnittestProto3.cs | 156 +++++------------- .../TestProtos/UnittestWellKnownTypes.cs | 16 +- .../Google.Protobuf/Reflection/Descriptor.cs | 76 +++------ csharp/src/Google.Protobuf/UnknownFieldSet.cs | 23 --- .../src/Google.Protobuf/WellKnownTypes/Any.cs | 4 +- .../src/Google.Protobuf/WellKnownTypes/Api.cs | 12 +- .../WellKnownTypes/Duration.cs | 4 +- .../Google.Protobuf/WellKnownTypes/Empty.cs | 4 +- .../WellKnownTypes/FieldMask.cs | 4 +- .../WellKnownTypes/SourceContext.cs | 4 +- .../Google.Protobuf/WellKnownTypes/Struct.cs | 12 +- .../WellKnownTypes/Timestamp.cs | 4 +- .../Google.Protobuf/WellKnownTypes/Type.cs | 20 +-- .../WellKnownTypes/Wrappers.cs | 36 +--- .../compiler/csharp/csharp_helpers.cc | 13 ++ .../protobuf/compiler/csharp/csharp_helpers.h | 3 + .../compiler/csharp/csharp_message.cc | 13 +- .../protobuf/compiler/csharp/csharp_message.h | 1 + 26 files changed, 167 insertions(+), 450 deletions(-) diff --git a/csharp/src/AddressBook/Addressbook.cs b/csharp/src/AddressBook/Addressbook.cs index c05125c629..d3e1ea9534 100644 --- a/csharp/src/AddressBook/Addressbook.cs +++ b/csharp/src/AddressBook/Addressbook.cs @@ -260,9 +260,7 @@ namespace Google.Protobuf.Examples.AddressBook { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -442,9 +440,7 @@ namespace Google.Protobuf.Examples.AddressBook { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Number = input.ReadString(); @@ -577,9 +573,7 @@ namespace Google.Protobuf.Examples.AddressBook { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { people_.AddEntriesFrom(input, _repeated_people_codec); diff --git a/csharp/src/Google.Protobuf.Conformance/Conformance.cs b/csharp/src/Google.Protobuf.Conformance/Conformance.cs index 73a140d3d1..0a5106280e 100644 --- a/csharp/src/Google.Protobuf.Conformance/Conformance.cs +++ b/csharp/src/Google.Protobuf.Conformance/Conformance.cs @@ -216,9 +216,7 @@ namespace Conformance { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { failure_.AddEntriesFrom(input, _repeated_failure_codec); @@ -581,9 +579,7 @@ namespace Conformance { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ProtobufPayload = input.ReadBytes(); @@ -1001,9 +997,7 @@ namespace Conformance { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ParseError = input.ReadString(); @@ -1166,9 +1160,7 @@ namespace Conformance { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { UseJspbArrayAnyFormat = input.ReadBool(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs index 2844ca62ce..6d3cd026d1 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs @@ -541,9 +541,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { mapInt32Int32_.AddEntriesFrom(input, _map_mapInt32Int32_codec); @@ -739,9 +737,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (testMap_ == null) { @@ -865,9 +861,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { mapInt32Message_.AddEntriesFrom(input, _map_mapInt32Message_codec); @@ -1007,9 +1001,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { map1_.AddEntriesFrom(input, _map_map1_codec); @@ -1358,9 +1350,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { mapInt32Int32_.AddEntriesFrom(input, _map_mapInt32Int32_codec); @@ -1541,9 +1531,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { type_.AddEntriesFrom(input, _map_type_codec); @@ -1678,9 +1666,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { entry_.AddEntriesFrom(input, _map_entry_codec); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs index b59075bc10..b14ee6caee 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs @@ -2895,9 +2895,7 @@ namespace ProtobufTestMessages.Proto3 { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { OptionalInt32 = input.ReadInt32(); @@ -3625,9 +3623,7 @@ namespace ProtobufTestMessages.Proto3 { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { A = input.ReadInt32(); @@ -3768,9 +3764,7 @@ namespace ProtobufTestMessages.Proto3 { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { C = input.ReadInt32(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs index 9b9ffe2560..2a9efe55ff 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs @@ -352,9 +352,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Field1 = input.ReadString(); @@ -480,9 +478,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -583,9 +579,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -686,9 +680,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -789,9 +781,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -892,9 +882,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1008,9 +996,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1111,9 +1097,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1214,9 +1198,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1317,9 +1299,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1420,9 +1400,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1523,9 +1501,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1714,9 +1690,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Foo = input.ReadInt32(); @@ -1928,9 +1902,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (bar_ == null) { @@ -2079,9 +2051,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Waldo = input.ReadInt32(); @@ -2215,9 +2185,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Qux = input.ReadInt32(); @@ -2325,9 +2293,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -2509,9 +2475,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { I = input.ReadInt32(); @@ -2651,9 +2615,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Fieldname = input.ReadInt32(); @@ -2761,9 +2723,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -2895,9 +2855,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { NestedField = input.ReadInt32(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs index 931dc2eb03..6bf9715171 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs @@ -167,9 +167,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { D = input.ReadInt32(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs index fee0120b42..97d181aff4 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs @@ -155,9 +155,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { E = input.ReadInt32(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs index f8296b0fab..f27ab64074 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs @@ -181,9 +181,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -286,9 +284,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -391,9 +387,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -560,9 +554,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = (global::UnitTest.Issues.TestProtos.NegativeEnum) input.ReadEnum(); @@ -677,9 +669,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -909,9 +899,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { PrimitiveValue = input.ReadInt32(); @@ -1068,9 +1056,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Item = input.ReadInt32(); @@ -1223,9 +1209,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Types_ = input.ReadInt32(); @@ -1339,9 +1323,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -1665,9 +1647,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { PlainString = input.ReadString(); @@ -1867,9 +1847,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -2069,9 +2047,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Text = input.ReadString(); @@ -2235,9 +2211,7 @@ namespace UnitTest.Issues.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { X = input.ReadInt32(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs index 1d4367b781..bbbee22c7b 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs @@ -1387,9 +1387,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { SingleInt32 = input.ReadInt32(); @@ -1757,9 +1755,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Bb = input.ReadInt32(); @@ -1942,9 +1938,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (child_ == null) { @@ -2088,9 +2082,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { DeprecatedInt32 = input.ReadInt32(); @@ -2223,9 +2215,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { C = input.ReadInt32(); @@ -2330,9 +2320,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -2463,9 +2451,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (foreignNested_ == null) { @@ -2628,9 +2614,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { A = input.ReadInt32(); @@ -2790,9 +2774,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (a_ == null) { @@ -2934,9 +2916,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (bb_ == null) { @@ -3095,9 +3075,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (a_ == null) { @@ -3233,9 +3211,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = (global::Google.Protobuf.TestProtos.TestEnumWithDupValue) input.ReadEnum(); @@ -3507,9 +3483,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { PrimitiveField = input.ReadInt32(); @@ -3750,9 +3724,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { MyInt = input.ReadInt64(); @@ -3927,9 +3899,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Bb = input.ReadInt32(); @@ -4067,9 +4037,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { SparseEnum = (global::Google.Protobuf.TestProtos.TestSparseEnum) input.ReadEnum(); @@ -4201,9 +4169,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Data = input.ReadString(); @@ -4324,9 +4290,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { data_.AddEntriesFrom(input, _repeated_data_codec); @@ -4455,9 +4419,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Data = input.ReadBytes(); @@ -4586,9 +4548,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Data = input.ReadBytes(); @@ -4720,9 +4680,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Data = input.ReadInt32(); @@ -4851,9 +4809,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Data = input.ReadUInt32(); @@ -4982,9 +4938,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Data = input.ReadInt64(); @@ -5113,9 +5067,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Data = input.ReadUInt64(); @@ -5244,9 +5196,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Data = input.ReadBool(); @@ -5463,9 +5413,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { FooInt = input.ReadInt32(); @@ -5807,9 +5755,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 722: case 720: { @@ -6208,9 +6154,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 722: case 720: { @@ -6491,9 +6435,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 98: case 101: { @@ -6651,9 +6593,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { A = input.ReadString(); @@ -6761,9 +6701,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -6864,9 +6802,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -6967,9 +6903,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -7070,9 +7004,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -7173,9 +7105,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -7276,9 +7206,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -7379,9 +7307,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } @@ -7512,9 +7438,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Text = input.ReadString(); @@ -7661,9 +7585,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { NestedText = input.ReadString(); diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs index a36825dc32..45f8ece646 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs @@ -788,9 +788,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (anyField_ == null) { @@ -1318,9 +1316,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { anyField_.AddEntriesFrom(input, _repeated_anyField_codec); @@ -2031,9 +2027,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { global::Google.Protobuf.WellKnownTypes.Any subBuilder = new global::Google.Protobuf.WellKnownTypes.Any(); @@ -2544,9 +2538,7 @@ namespace Google.Protobuf.TestProtos { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { anyField_.AddEntriesFrom(input, _map_anyField_codec); diff --git a/csharp/src/Google.Protobuf/Reflection/Descriptor.cs b/csharp/src/Google.Protobuf/Reflection/Descriptor.cs index f101cd3526..0c33e63df4 100644 --- a/csharp/src/Google.Protobuf/Reflection/Descriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/Descriptor.cs @@ -302,9 +302,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { file_.AddEntriesFrom(input, _repeated_file_codec); @@ -735,9 +733,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -1102,9 +1098,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -1363,9 +1357,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Start = input.ReadInt32(); @@ -1568,9 +1560,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Start = input.ReadInt32(); @@ -1703,9 +1693,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 7994: { uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); @@ -2212,9 +2200,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -2501,9 +2487,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -2748,9 +2732,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -2966,9 +2948,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Start = input.ReadInt32(); @@ -3197,9 +3177,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -3407,9 +3385,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -3759,9 +3735,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -6949,9 +6923,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 18: { name_.AddEntriesFrom(input, _repeated_name_codec); @@ -7164,9 +7136,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { NamePart_ = input.ReadString(); @@ -7345,9 +7315,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { location_.AddEntriesFrom(input, _repeated_location_codec); @@ -7655,9 +7623,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: case 8: { @@ -7810,9 +7776,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { annotation_.AddEntriesFrom(input, _repeated_annotation_codec); @@ -8063,9 +8027,7 @@ namespace Google.Protobuf.Reflection { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: case 8: { diff --git a/csharp/src/Google.Protobuf/UnknownFieldSet.cs b/csharp/src/Google.Protobuf/UnknownFieldSet.cs index 9121567621..21ec13bf84 100644 --- a/csharp/src/Google.Protobuf/UnknownFieldSet.cs +++ b/csharp/src/Google.Protobuf/UnknownFieldSet.cs @@ -260,29 +260,6 @@ namespace Google.Protobuf } return unknownFields; } - - /// - /// Create a new UnknownFieldSet if unknownFields is null. - /// Parse a single field from and merge it - /// into unknownFields. If is configured to discard unknown fields, - /// will be returned as-is and the field will be skipped. - /// - /// The UnknownFieldSet which need to be merged - /// The coded input stream containing the field - /// The merged UnknownFieldSet - public static bool MergeFieldFrom(ref UnknownFieldSet unknownFields, CodedInputStream input) - { - if (input.DiscardUnknownFields) - { - input.SkipLastField(); - return true; - } - if (unknownFields == null) - { - unknownFields = new UnknownFieldSet(); - } - return unknownFields.MergeFieldFrom(input); - } /// /// Merges the fields from into this set. diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs index b1ed0bc307..dd9911067e 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs @@ -292,9 +292,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { TypeUrl = input.ReadString(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs index a566e40640..438e1db8da 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs @@ -345,9 +345,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -663,9 +661,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -929,9 +925,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs index 691ca334ea..2858b532b6 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs @@ -254,9 +254,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Seconds = input.ReadInt64(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs index 03ffc4a057..2113add9bc 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs @@ -143,9 +143,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs b/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs index 8114aa3924..6ad31a50ea 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs @@ -352,9 +352,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { paths_.AddEntriesFrom(input, _repeated_paths_codec); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs b/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs index 2cae68631d..124ddaa712 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs @@ -165,9 +165,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { FileName = input.ReadString(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs index 9667472522..194b81e965 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs @@ -189,9 +189,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { fields_.AddEntriesFrom(input, _map_fields_codec); @@ -515,9 +513,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { kind_ = input.ReadEnum(); @@ -677,9 +673,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { values_.AddEntriesFrom(input, _repeated_values_codec); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs index 524ac06e3d..2e5809f2fa 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs @@ -273,9 +273,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Seconds = input.ReadInt64(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs index adea910634..52bd343ba8 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs @@ -328,9 +328,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -725,9 +723,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Kind = (global::Google.Protobuf.WellKnownTypes.Field.Types.Kind) input.ReadEnum(); @@ -1104,9 +1100,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -1306,9 +1300,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); @@ -1488,9 +1480,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); diff --git a/csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs b/csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs index 679eb0f234..25a65aa72c 100644 --- a/csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs +++ b/csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs @@ -177,9 +177,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 9: { Value = input.ReadDouble(); @@ -316,9 +314,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 13: { Value = input.ReadFloat(); @@ -455,9 +451,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = input.ReadInt64(); @@ -594,9 +588,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = input.ReadUInt64(); @@ -733,9 +725,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = input.ReadInt32(); @@ -872,9 +862,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = input.ReadUInt32(); @@ -1011,9 +999,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Value = input.ReadBool(); @@ -1150,9 +1136,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Value = input.ReadString(); @@ -1289,9 +1273,7 @@ namespace Google.Protobuf.WellKnownTypes { while ((tag = input.ReadTag()) != 0) { switch(tag) { default: - if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) { - return; - } + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Value = input.ReadBytes(); diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.cc b/src/google/protobuf/compiler/csharp/csharp_helpers.cc index dace41006a..b11e40da5c 100644 --- a/src/google/protobuf/compiler/csharp/csharp_helpers.cc +++ b/src/google/protobuf/compiler/csharp/csharp_helpers.cc @@ -278,6 +278,19 @@ std::string GetEnumValueName(const std::string& enum_name, const std::string& en return result; } +uint GetGroupEndTag(const Descriptor* descriptor) { + const Descriptor* containing_type = descriptor->containing_type(); + if (containing_type == NULL) { + return 0; + } + const FieldDescriptor* field = containing_type->FindFieldByName(descriptor->name()); + if (field != NULL && field->type() == FieldDescriptor::Type::TYPE_GROUP) { + return internal::WireFormatLite::MakeTag(field->number(), internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + } else { + return 0; + } +} + std::string ToCSharpName(const std::string& name, const FileDescriptor* file) { std::string result = GetFileNamespace(file); if (result != "") { diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.h b/src/google/protobuf/compiler/csharp/csharp_helpers.h index 5b9f90e0ef..d351a1c9b7 100644 --- a/src/google/protobuf/compiler/csharp/csharp_helpers.h +++ b/src/google/protobuf/compiler/csharp/csharp_helpers.h @@ -118,6 +118,9 @@ inline bool IsMapEntryMessage(const Descriptor* descriptor) { return descriptor->options().map_entry(); } +// Checks if this descriptor is for a group and gets its end tag or 0 if it's not a group +uint GetGroupEndTag(const Descriptor* descriptor); + // Determines whether we're generating code for the proto representation of // descriptors etc, for use in the runtime. This is the only type which is // allowed to use proto2 syntax, and it generates internal classes. diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc index be1cd115a5..6a79979f77 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message.cc +++ b/src/google/protobuf/compiler/csharp/csharp_message.cc @@ -63,7 +63,8 @@ MessageGenerator::MessageGenerator(const Descriptor* descriptor, const Options* options) : SourceGeneratorBase(descriptor->file(), options), descriptor_(descriptor), - has_bit_field_count_(0) { + has_bit_field_count_(0), + end_tag_(GetGroupEndTag(descriptor)) { // fields by number for (int i = 0; i < descriptor_->field_count(); i++) { fields_by_number_.push_back(descriptor_->field(i)); @@ -539,10 +540,14 @@ void MessageGenerator::GenerateMergingMethods(io::Printer* printer) { } else { printer->Print( "default:\n" - " if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) {\n" - " return;\n" - " }\n" + " _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);\n" " break;\n"); + if (end_tag_ != 0) { + printer->Print( + "$end_tag$:\n" + " return;\n", + "end_tag", SimpleItoa(end_tag_)); + } } for (int i = 0; i < fields_by_number().size(); i++) { const FieldDescriptor* field = fields_by_number()[i]; diff --git a/src/google/protobuf/compiler/csharp/csharp_message.h b/src/google/protobuf/compiler/csharp/csharp_message.h index 5e0ac960d8..d2ffe66a4e 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message.h +++ b/src/google/protobuf/compiler/csharp/csharp_message.h @@ -59,6 +59,7 @@ class MessageGenerator : public SourceGeneratorBase { const Descriptor* descriptor_; std::vector fields_by_number_; int has_bit_field_count_; + uint end_tag_; void GenerateMessageSerializationMethods(io::Printer* printer); void GenerateMergingMethods(io::Printer* printer);