Commit 123e5349 authored by csharptest's avatar csharptest Committed by rogerk

Canged CodedInputStream.ReadTag to use boolean result with out params to

support reading a field name rather than a field tag.
parent ffafdaa0
...@@ -287,14 +287,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -287,14 +287,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -327,6 +325,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -327,6 +325,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -582,14 +585,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -582,14 +585,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -624,6 +625,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -624,6 +625,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -899,14 +905,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -899,14 +905,12 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -929,6 +933,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { ...@@ -929,6 +933,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -615,19 +615,21 @@ namespace Google.ProtocolBuffers.ProtoGen ...@@ -615,19 +615,21 @@ namespace Google.ProtocolBuffers.ProtoGen
{ {
writer.WriteLine("pb::UnknownFieldSet.Builder unknownFields = null;"); writer.WriteLine("pb::UnknownFieldSet.Builder unknownFields = null;");
} }
writer.WriteLine("while (true) {"); writer.WriteLine("uint tag;");
writer.WriteLine("string field_name;");
writer.WriteLine("while (input.ReadTag(out tag, out field_name)) {");
writer.Indent(); writer.Indent();
writer.WriteLine("uint tag = input.ReadTag();");
writer.WriteLine("switch (tag) {"); writer.WriteLine("switch (tag) {");
writer.Indent(); writer.Indent();
writer.WriteLine("case 0: {"); // 0 signals EOF / limit reached writer.WriteLine("case 0: {"); // 0 signals EOF / limit reached
if (!UseLiteRuntime) //if (!UseLiteRuntime)
{ //{
writer.WriteLine(" if (unknownFields != null) {"); // writer.WriteLine(" if (unknownFields != null) {");
writer.WriteLine(" this.UnknownFields = unknownFields.Build();"); // writer.WriteLine(" this.UnknownFields = unknownFields.Build();");
writer.WriteLine(" }"); // writer.WriteLine(" }");
} //}
writer.WriteLine(" return this;"); //writer.WriteLine(" return this;");
writer.WriteLine(" throw InvalidProtocolBufferException.InvalidTag();");
writer.WriteLine("}"); writer.WriteLine("}");
writer.WriteLine("default: {"); writer.WriteLine("default: {");
writer.WriteLine(" if (pb::WireFormat.IsEndGroupTag(tag)) {"); writer.WriteLine(" if (pb::WireFormat.IsEndGroupTag(tag)) {");
...@@ -663,6 +665,14 @@ namespace Google.ProtocolBuffers.ProtoGen ...@@ -663,6 +665,14 @@ namespace Google.ProtocolBuffers.ProtoGen
writer.WriteLine("}"); writer.WriteLine("}");
writer.Outdent(); writer.Outdent();
writer.WriteLine("}"); writer.WriteLine("}");
writer.WriteLine();
if (!UseLiteRuntime)
{
writer.WriteLine("if (unknownFields != null) {");
writer.WriteLine(" this.UnknownFields = unknownFields.Build();");
writer.WriteLine("}");
}
writer.WriteLine("return this;");
writer.Outdent(); writer.Outdent();
writer.WriteLine("}"); writer.WriteLine("}");
writer.WriteLine(); writer.WriteLine();
......
...@@ -283,16 +283,16 @@ namespace Google.ProtocolBuffers ...@@ -283,16 +283,16 @@ namespace Google.ProtocolBuffers
CodedInputStream input2 = CodedInputStream.CreateInstance(rawBytes); CodedInputStream input2 = CodedInputStream.CreateInstance(rawBytes);
UnknownFieldSet.Builder unknownFields = UnknownFieldSet.CreateBuilder(); UnknownFieldSet.Builder unknownFields = UnknownFieldSet.CreateBuilder();
while (true) uint tag;
string name;
while (input1.ReadTag(out tag, out name))
{ {
uint tag = input1.ReadTag(); uint tag2;
Assert.AreEqual(tag, input2.ReadTag()); Assert.IsTrue(input2.ReadTag(out tag2, out name));
if (tag == 0) Assert.AreEqual(tag, tag2);
{
break;
}
unknownFields.MergeFieldFrom(tag, input1); unknownFields.MergeFieldFrom(tag, input1);
input2.SkipField(tag); input2.SkipField();
} }
} }
...@@ -355,7 +355,10 @@ namespace Google.ProtocolBuffers ...@@ -355,7 +355,10 @@ namespace Google.ProtocolBuffers
ms.Position = 0; ms.Position = 0;
CodedInputStream input = CodedInputStream.CreateInstance(ms); CodedInputStream input = CodedInputStream.CreateInstance(ms);
Assert.AreEqual(tag, input.ReadTag()); uint testtag;
string ignore;
Assert.IsTrue(input.ReadTag(out testtag, out ignore));
Assert.AreEqual(tag, testtag);
try try
{ {
...@@ -497,7 +500,12 @@ namespace Google.ProtocolBuffers ...@@ -497,7 +500,12 @@ namespace Google.ProtocolBuffers
ms.Position = 0; ms.Position = 0;
CodedInputStream input = CodedInputStream.CreateInstance(ms); CodedInputStream input = CodedInputStream.CreateInstance(ms);
Assert.AreEqual(tag, input.ReadTag());
uint testtag;
string ignored;
Assert.IsTrue(input.ReadTag(out testtag, out ignored));
Assert.AreEqual(tag, testtag);
string text = input.ReadString(); string text = input.ReadString();
Assert.AreEqual('\ufffd', text[0]); Assert.AreEqual('\ufffd', text[0]);
} }
......
...@@ -259,14 +259,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -259,14 +259,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -295,6 +293,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -295,6 +293,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -253,14 +253,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -253,14 +253,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -292,6 +290,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -292,6 +290,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -1069,14 +1069,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1069,14 +1069,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1262,6 +1260,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1262,6 +1260,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -2579,14 +2582,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -2579,14 +2582,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -2683,6 +2684,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -2683,6 +2684,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -3570,14 +3576,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -3570,14 +3576,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -3663,6 +3667,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -3663,6 +3667,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -4736,14 +4745,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -4736,14 +4745,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -4882,6 +4889,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -4882,6 +4889,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -5838,14 +5850,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -5838,14 +5850,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -5906,6 +5916,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -5906,6 +5916,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -207,11 +207,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -207,11 +207,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -226,6 +227,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -226,6 +227,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
......
...@@ -232,14 +232,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -232,14 +232,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -260,6 +258,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -260,6 +258,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -250,14 +250,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -250,14 +250,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -274,6 +272,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -274,6 +272,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
} }
...@@ -449,14 +452,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -449,14 +452,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -482,6 +483,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -482,6 +483,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -695,14 +701,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -695,14 +701,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -723,6 +727,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -723,6 +727,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -918,14 +927,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -918,14 +927,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -946,6 +953,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -946,6 +953,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1191,14 +1203,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1191,14 +1203,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1223,6 +1233,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1223,6 +1233,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1416,14 +1431,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1416,14 +1431,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1446,6 +1459,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1446,6 +1459,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -247,14 +247,12 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { ...@@ -247,14 +247,12 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -275,6 +273,11 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { ...@@ -275,6 +273,11 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -252,14 +252,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -252,14 +252,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -280,6 +278,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -280,6 +278,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -533,14 +536,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -533,14 +536,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -565,6 +566,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -565,6 +566,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -762,14 +768,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -762,14 +768,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -792,6 +796,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -792,6 +796,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1034,14 +1043,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1034,14 +1043,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1071,6 +1078,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1071,6 +1078,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -320,14 +320,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -320,14 +320,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -360,6 +358,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -360,6 +358,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -561,14 +564,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -561,14 +564,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -585,6 +586,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -585,6 +586,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
} }
...@@ -819,14 +825,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -819,14 +825,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -859,6 +863,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -859,6 +863,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1195,14 +1204,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1195,14 +1204,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1254,6 +1261,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1254,6 +1261,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1613,14 +1625,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1613,14 +1625,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1641,6 +1651,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1641,6 +1651,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -173,17 +173,13 @@ namespace Google.ProtocolBuffers ...@@ -173,17 +173,13 @@ namespace Google.ProtocolBuffers
CodedInputStream input = data.CreateCodedInput(); CodedInputStream input = data.CreateCodedInput();
uint previousTag = 0; uint previousTag = 0;
while (true) uint tag;
string name;
while (input.ReadTag(out tag, out name))
{ {
uint tag = input.ReadTag();
if (tag == 0)
{
break;
}
Assert.IsTrue(tag > previousTag); Assert.IsTrue(tag > previousTag);
previousTag = tag; previousTag = tag;
input.SkipField(tag); input.SkipField();
} }
} }
......
...@@ -162,29 +162,40 @@ namespace Google.ProtocolBuffers ...@@ -162,29 +162,40 @@ namespace Google.ProtocolBuffers
#endregion #endregion
#region Reading of tags etc #region Reading of tags etc
/// <summary> /// <summary>
/// Attempt to read a field tag, returning 0 if we have reached the end /// Attempt to read a field tag, returning false if we have reached the end
/// of the input data. Protocol message parsers use this to read tags, /// of the input data.
/// since a protocol message may legally end wherever a tag occurs, and
/// zero is not a valid tag number.
/// </summary> /// </summary>
/// <remarks>
/// <para>
/// If fieldTag is non-zero and ReadTag returns true then the value in fieldName
/// may or may not be populated. However, if fieldTag is zero and ReadTag returns
/// true, then fieldName should be populated with a non-null field name.
/// </para><para>
/// In other words if ReadTag returns true then either fieldTag will be non-zero OR
/// fieldName will be non-zero. In some cases both may be populated, however the
/// builders will always prefer the fieldTag over fieldName.
/// </para>
/// </remarks>
[CLSCompliant(false)] [CLSCompliant(false)]
public uint ReadTag() public bool ReadTag(out uint fieldTag, out string fieldName)
{ {
fieldName = null;
if (IsAtEnd) if (IsAtEnd)
{ {
lastTag = 0; lastTag = fieldTag = 0;
return 0; return false;
} }
lastTag = ReadRawVarint32(); lastTag = fieldTag = ReadRawVarint32();
if (lastTag == 0) if (lastTag == 0)
{ {
// If we actually read zero, that's not a valid tag. // If we actually read zero, that's not a valid tag.
throw InvalidProtocolBufferException.InvalidTag(); throw InvalidProtocolBufferException.InvalidTag();
} }
return lastTag; return true;
} }
/// <summary> /// <summary>
...@@ -1030,8 +1041,9 @@ namespace Google.ProtocolBuffers ...@@ -1030,8 +1041,9 @@ namespace Google.ProtocolBuffers
/// <returns>false if the tag is an end-group tag, in which case /// <returns>false if the tag is an end-group tag, in which case
/// nothing is skipped. Otherwise, returns true.</returns> /// nothing is skipped. Otherwise, returns true.</returns>
[CLSCompliant(false)] [CLSCompliant(false)]
public bool SkipField(uint tag) public bool SkipField()
{ {
uint tag = lastTag;
switch (WireFormat.GetTagWireType(tag)) switch (WireFormat.GetTagWireType(tag))
{ {
case WireFormat.WireType.Varint: case WireFormat.WireType.Varint:
...@@ -1065,10 +1077,11 @@ namespace Google.ProtocolBuffers ...@@ -1065,10 +1077,11 @@ namespace Google.ProtocolBuffers
/// </summary> /// </summary>
public void SkipMessage() public void SkipMessage()
{ {
while (true) uint tag;
string name;
while (ReadTag(out tag, out name))
{ {
uint tag = ReadTag(); if (!SkipField())
if (tag == 0 || !SkipField(tag))
{ {
return; return;
} }
......
...@@ -514,14 +514,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -514,14 +514,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -598,6 +596,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -598,6 +596,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1012,14 +1015,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1012,14 +1015,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1040,6 +1041,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1040,6 +1041,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1234,14 +1240,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1234,14 +1240,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1262,6 +1266,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1262,6 +1266,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
...@@ -1456,14 +1465,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1456,14 +1465,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1484,6 +1491,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { ...@@ -1484,6 +1491,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -168,7 +168,7 @@ namespace Google.ProtocolBuffers ...@@ -168,7 +168,7 @@ namespace Google.ProtocolBuffers
if (unknown) if (unknown)
{ {
// Unknown field or wrong wire type. Skip. // Unknown field or wrong wire type. Skip.
return input.SkipField(tag); return input.SkipField();
} }
if (packed) if (packed)
......
...@@ -101,7 +101,7 @@ namespace Google.ProtocolBuffers ...@@ -101,7 +101,7 @@ namespace Google.ProtocolBuffers
protected virtual bool ParseUnknownField(CodedInputStream input, protected virtual bool ParseUnknownField(CodedInputStream input,
ExtensionRegistry extensionRegistry, uint tag) ExtensionRegistry extensionRegistry, uint tag)
{ {
return input.SkipField(tag); return input.SkipField();
} }
/// <summary> /// <summary>
......
...@@ -71,7 +71,7 @@ namespace Google.ProtocolBuffers ...@@ -71,7 +71,7 @@ namespace Google.ProtocolBuffers
"CodedInputStream encountered a malformed varint."); "CodedInputStream encountered a malformed varint.");
} }
internal static InvalidProtocolBufferException InvalidTag() public static InvalidProtocolBufferException InvalidTag()
{ {
return new InvalidProtocolBufferException( return new InvalidProtocolBufferException(
"Protocol message contained an invalid tag (zero)."); "Protocol message contained an invalid tag (zero).");
......
...@@ -219,13 +219,14 @@ namespace Google.ProtocolBuffers ...@@ -219,13 +219,14 @@ namespace Google.ProtocolBuffers
CodedInputStream input = CodedInputStream.CreateInstance(stream); CodedInputStream input = CodedInputStream.CreateInstance(stream);
input.SetSizeLimit(sizeLimit); input.SetSizeLimit(sizeLimit);
uint tag; uint tag;
while ((tag = input.ReadTag()) != 0) string name;
while (input.ReadTag(out tag, out name))
{ {
if (tag != ExpectedTag) if ((tag == 0 && name == "item") || (tag == ExpectedTag))
{ yield return messageReader(input, extensionRegistry);
else
throw InvalidProtocolBufferException.InvalidMessageStreamTag(); throw InvalidProtocolBufferException.InvalidMessageStreamTag();
}
yield return messageReader(input, extensionRegistry);
input.ResetSizeCounter(); input.ResetSizeCounter();
} }
} }
......
...@@ -419,13 +419,19 @@ namespace Google.ProtocolBuffers ...@@ -419,13 +419,19 @@ namespace Google.ProtocolBuffers
/// </summary> /// </summary>
public Builder MergeFrom(CodedInputStream input) public Builder MergeFrom(CodedInputStream input)
{ {
while (true) uint tag;
string name;
while (input.ReadTag(out tag, out name))
{ {
uint tag = input.ReadTag(); if (tag == 0)
if (tag == 0 || !MergeFieldFrom(tag, input))
{ {
if (input.SkipField())
continue; //can't merge unknown without field tag
break; break;
} }
if(!MergeFieldFrom(tag, input))
break;
} }
return this; return this;
} }
...@@ -581,11 +587,14 @@ namespace Google.ProtocolBuffers ...@@ -581,11 +587,14 @@ namespace Google.ProtocolBuffers
internal void MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder) internal void MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder)
{ {
while (true) uint tag;
string name;
while (input.ReadTag(out tag, out name))
{ {
uint tag = input.ReadTag();
if (tag == 0) if (tag == 0)
{ {
if (input.SkipField())
continue; //can't merge unknown without field tag
break; break;
} }
...@@ -765,11 +774,14 @@ namespace Google.ProtocolBuffers ...@@ -765,11 +774,14 @@ namespace Google.ProtocolBuffers
IBuilderLite subBuilder = null; IBuilderLite subBuilder = null;
FieldDescriptor field = null; FieldDescriptor field = null;
while (true) uint tag;
string name;
while (input.ReadTag(out tag, out name))
{ {
uint tag = input.ReadTag();
if (tag == 0) if (tag == 0)
{ {
if (input.SkipField())
continue; //can't merge unknown without field tag
break; break;
} }
...@@ -833,7 +845,7 @@ namespace Google.ProtocolBuffers ...@@ -833,7 +845,7 @@ namespace Google.ProtocolBuffers
else else
{ {
// Unknown tag. Skip it. // Unknown tag. Skip it.
if (!input.SkipField(tag)) if (!input.SkipField())
{ {
break; // end of group break; // end of group
} }
......
...@@ -247,11 +247,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -247,11 +247,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -274,6 +275,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -274,6 +275,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -541,11 +544,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -541,11 +544,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -568,6 +572,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -568,6 +572,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -876,11 +882,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -876,11 +882,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -911,6 +918,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -911,6 +918,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -1321,11 +1330,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1321,11 +1330,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1369,6 +1379,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1369,6 +1379,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -1706,11 +1718,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1706,11 +1718,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1725,6 +1738,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1725,6 +1738,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
......
...@@ -207,11 +207,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -207,11 +207,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -226,6 +227,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -226,6 +227,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
......
...@@ -232,14 +232,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -232,14 +232,12 @@ namespace Google.ProtocolBuffers.TestProtos {
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null; pb::UnknownFieldSet.Builder unknownFields = null;
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
if (unknownFields != null) { throw InvalidProtocolBufferException.InvalidTag();
this.UnknownFields = unknownFields.Build();
}
return this;
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -260,6 +258,11 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -260,6 +258,11 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
} }
......
...@@ -196,11 +196,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -196,11 +196,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -220,6 +221,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -220,6 +221,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
......
...@@ -1250,11 +1250,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1250,11 +1250,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1269,6 +1270,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1269,6 +1270,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -1465,11 +1468,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1465,11 +1468,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1484,6 +1488,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1484,6 +1488,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -1680,11 +1686,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1680,11 +1686,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -1699,6 +1706,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -1699,6 +1706,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -3607,11 +3616,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -3607,11 +3616,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -3958,6 +3968,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -3958,6 +3968,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -5724,11 +5736,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -5724,11 +5736,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -5743,6 +5756,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -5743,6 +5756,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -6430,11 +6445,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -6430,11 +6445,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -6575,6 +6591,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -6575,6 +6591,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -7123,11 +7141,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7123,11 +7141,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -7138,6 +7157,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7138,6 +7157,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
} }
...@@ -7316,11 +7337,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7316,11 +7337,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -7335,6 +7357,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7335,6 +7357,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -7531,11 +7555,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7531,11 +7555,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -7550,6 +7575,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7550,6 +7575,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
...@@ -7732,11 +7759,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7732,11 +7759,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -7747,6 +7775,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7747,6 +7775,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
} }
...@@ -7905,11 +7935,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7905,11 +7935,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -7920,6 +7951,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -7920,6 +7951,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
} }
...@@ -8098,11 +8131,12 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -8098,11 +8131,12 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
while (true) { uint tag;
uint tag = input.ReadTag(); string field_name;
while (input.ReadTag(out tag, out field_name)) {
switch (tag) { switch (tag) {
case 0: { case 0: {
return this; throw InvalidProtocolBufferException.InvalidTag();
} }
default: { default: {
if (pb::WireFormat.IsEndGroupTag(tag)) { if (pb::WireFormat.IsEndGroupTag(tag)) {
...@@ -8117,6 +8151,8 @@ namespace Google.ProtocolBuffers.TestProtos { ...@@ -8117,6 +8151,8 @@ namespace Google.ProtocolBuffers.TestProtos {
} }
} }
} }
return this;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment