Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C# Proto2 feature : Field presence and default values #4642

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
80be735
Compiler changes
ObsidianMinor May 17, 2018
0e0990b
Generated code changes
ObsidianMinor May 17, 2018
6ddfd49
Library changes
ObsidianMinor May 17, 2018
3bc0f30
Compiler style changes
ObsidianMinor May 17, 2018
f1f59b3
Generated style changes
ObsidianMinor May 17, 2018
2bbfd0e
Fix Windows build errors
ObsidianMinor May 18, 2018
60b05c4
Implement changes from review
ObsidianMinor Jun 14, 2018
3f4f485
Reintroduce proto2 check
ObsidianMinor Jun 20, 2018
1d05c33
Compiler changes (required handling review)
ObsidianMinor Jun 20, 2018
5487b00
Generated code changes (required handling review)
ObsidianMinor Jun 20, 2018
6688e66
Library changes (required handling review
ObsidianMinor Jun 20, 2018
326af68
Field presence rewrite (compiler changes)
ObsidianMinor Jun 23, 2018
6e3d658
Field presence rewrite (generated code changes)
ObsidianMinor Jun 23, 2018
e7d8ce9
Compiler comment
ObsidianMinor Jul 4, 2018
d32d780
IFieldAccessor.HasValue library implementation
ObsidianMinor Jul 4, 2018
917b964
Remove Clear methods and default values from proto3 code (Compiler)
ObsidianMinor Jul 18, 2018
d72b18a
Remove Clear methods and default values from proto3 code (Generated)
ObsidianMinor Jul 18, 2018
9374b72
Remove Clear methods and default values from proto3 code (Library)
ObsidianMinor Jul 18, 2018
a085f92
Fix distcheck error
ObsidianMinor Jul 23, 2018
fcf7894
Rewrite default string values to use base64 and convert
ObsidianMinor Jul 23, 2018
20f3070
Library changes (IMessage2)
ObsidianMinor Jul 28, 2018
b839392
Compiler changes (IMessage2)
ObsidianMinor Jul 28, 2018
81fcb49
Generated changes (IMessage2)
ObsidianMinor Jul 28, 2018
45a998b
Rebased and regenerated
ObsidianMinor Aug 2, 2018
dc7fee4
Compiler changes (initialized extension)
ObsidianMinor Aug 9, 2018
659c6db
Generated changes (initialized extension)
ObsidianMinor Aug 9, 2018
72f2e08
Library changes (initialized extension)
ObsidianMinor Aug 9, 2018
222fc5a
Refactor MessageExtensions.IsRequired
ObsidianMinor Sep 18, 2018
792f9dd
Move string default value creator and bytes default value creator bac…
ObsidianMinor Sep 18, 2018
b6b77d1
Dead code cleanup
ObsidianMinor Sep 18, 2018
4e3ae8d
Fixed segmentation fault
ObsidianMinor Sep 19, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion Makefile.am
Expand Up @@ -176,7 +176,6 @@ csharp_EXTRA_DIST= \
csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs \
csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs \
csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs \
csharp/src/Google.Protobuf/Reflection/PartialClasses.cs \
csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs \
csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs \
csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs \
Expand Down
8 changes: 4 additions & 4 deletions csharp/src/AddressBook/Addressbook.cs
Expand Up @@ -247,7 +247,7 @@ public sealed partial class Person : pb::IMessage<Person> {
phones_.Add(other.phones_);
if (other.lastUpdated_ != null) {
if (lastUpdated_ == null) {
lastUpdated_ = new global::Google.Protobuf.WellKnownTypes.Timestamp();
LastUpdated = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
LastUpdated.MergeFrom(other.LastUpdated);
}
Expand Down Expand Up @@ -280,9 +280,9 @@ public sealed partial class Person : pb::IMessage<Person> {
}
case 42: {
if (lastUpdated_ == null) {
lastUpdated_ = new global::Google.Protobuf.WellKnownTypes.Timestamp();
LastUpdated = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
input.ReadMessage(lastUpdated_);
input.ReadMessage(LastUpdated);
break;
}
}
Expand Down Expand Up @@ -447,7 +447,7 @@ public sealed partial class PhoneNumber : pb::IMessage<PhoneNumber> {
break;
}
case 16: {
type_ = (global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType) input.ReadEnum();
Type = (global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType) input.ReadEnum();
break;
}
}
Expand Down
4 changes: 2 additions & 2 deletions csharp/src/Google.Protobuf.Conformance/Conformance.cs
Expand Up @@ -354,15 +354,15 @@ public enum PayloadOneofCase {
break;
}
case 24: {
requestedOutputFormat_ = (global::Conformance.WireFormat) input.ReadEnum();
RequestedOutputFormat = (global::Conformance.WireFormat) input.ReadEnum();
break;
}
case 34: {
MessageType = input.ReadString();
break;
}
case 40: {
testCategory_ = (global::Conformance.TestCategory) input.ReadEnum();
TestCategory = (global::Conformance.TestCategory) input.ReadEnum();
break;
}
}
Expand Down
Expand Up @@ -724,7 +724,7 @@ public sealed partial class TestMapSubmessage : pb::IMessage<TestMapSubmessage>
}
if (other.testMap_ != null) {
if (testMap_ == null) {
testMap_ = new global::Google.Protobuf.TestProtos.TestMap();
TestMap = new global::Google.Protobuf.TestProtos.TestMap();
}
TestMap.MergeFrom(other.TestMap);
}
Expand All @@ -741,9 +741,9 @@ public sealed partial class TestMapSubmessage : pb::IMessage<TestMapSubmessage>
break;
case 10: {
if (testMap_ == null) {
testMap_ = new global::Google.Protobuf.TestProtos.TestMap();
TestMap = new global::Google.Protobuf.TestProtos.TestMap();
}
input.ReadMessage(testMap_);
input.ReadMessage(TestMap);
break;
}
}
Expand Down
73 changes: 41 additions & 32 deletions csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs
Expand Up @@ -1171,6 +1171,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_int32_wrapper" field.</summary>
public const int OptionalInt32WrapperFieldNumber = 202;
private static readonly pb::FieldCodec<int?> _single_optionalInt32Wrapper_codec = pb::FieldCodec.ForStructWrapper<int>(1618);
Expand All @@ -1183,6 +1184,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_int64_wrapper" field.</summary>
public const int OptionalInt64WrapperFieldNumber = 203;
private static readonly pb::FieldCodec<long?> _single_optionalInt64Wrapper_codec = pb::FieldCodec.ForStructWrapper<long>(1626);
Expand All @@ -1195,6 +1197,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_uint32_wrapper" field.</summary>
public const int OptionalUint32WrapperFieldNumber = 204;
private static readonly pb::FieldCodec<uint?> _single_optionalUint32Wrapper_codec = pb::FieldCodec.ForStructWrapper<uint>(1634);
Expand All @@ -1207,6 +1210,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_uint64_wrapper" field.</summary>
public const int OptionalUint64WrapperFieldNumber = 205;
private static readonly pb::FieldCodec<ulong?> _single_optionalUint64Wrapper_codec = pb::FieldCodec.ForStructWrapper<ulong>(1642);
Expand All @@ -1219,6 +1223,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_float_wrapper" field.</summary>
public const int OptionalFloatWrapperFieldNumber = 206;
private static readonly pb::FieldCodec<float?> _single_optionalFloatWrapper_codec = pb::FieldCodec.ForStructWrapper<float>(1650);
Expand All @@ -1231,6 +1236,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_double_wrapper" field.</summary>
public const int OptionalDoubleWrapperFieldNumber = 207;
private static readonly pb::FieldCodec<double?> _single_optionalDoubleWrapper_codec = pb::FieldCodec.ForStructWrapper<double>(1658);
Expand All @@ -1243,6 +1249,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_string_wrapper" field.</summary>
public const int OptionalStringWrapperFieldNumber = 208;
private static readonly pb::FieldCodec<string> _single_optionalStringWrapper_codec = pb::FieldCodec.ForClassWrapper<string>(1666);
Expand All @@ -1255,6 +1262,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "optional_bytes_wrapper" field.</summary>
public const int OptionalBytesWrapperFieldNumber = 209;
private static readonly pb::FieldCodec<pb::ByteString> _single_optionalBytesWrapper_codec = pb::FieldCodec.ForClassWrapper<pb::ByteString>(1674);
Expand All @@ -1267,6 +1275,7 @@ public sealed partial class TestAllTypesProto3 : pb::IMessage<TestAllTypesProto3
}
}


/// <summary>Field number for the "repeated_bool_wrapper" field.</summary>
public const int RepeatedBoolWrapperFieldNumber = 211;
private static readonly pb::FieldCodec<bool?> _repeated_repeatedBoolWrapper_codec
Expand Down Expand Up @@ -2598,13 +2607,13 @@ public enum OneofFieldOneofCase {
}
if (other.optionalNestedMessage_ != null) {
if (optionalNestedMessage_ == null) {
optionalNestedMessage_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage();
OptionalNestedMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage();
}
OptionalNestedMessage.MergeFrom(other.OptionalNestedMessage);
}
if (other.optionalForeignMessage_ != null) {
if (optionalForeignMessage_ == null) {
optionalForeignMessage_ = new global::ProtobufTestMessages.Proto3.ForeignMessage();
OptionalForeignMessage = new global::ProtobufTestMessages.Proto3.ForeignMessage();
}
OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage);
}
Expand All @@ -2622,7 +2631,7 @@ public enum OneofFieldOneofCase {
}
if (other.recursiveMessage_ != null) {
if (recursiveMessage_ == null) {
recursiveMessage_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
RecursiveMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
}
RecursiveMessage.MergeFrom(other.RecursiveMessage);
}
Expand Down Expand Up @@ -2722,37 +2731,37 @@ public enum OneofFieldOneofCase {
repeatedBytesWrapper_.Add(other.repeatedBytesWrapper_);
if (other.optionalDuration_ != null) {
if (optionalDuration_ == null) {
optionalDuration_ = new global::Google.Protobuf.WellKnownTypes.Duration();
OptionalDuration = new global::Google.Protobuf.WellKnownTypes.Duration();
}
OptionalDuration.MergeFrom(other.OptionalDuration);
}
if (other.optionalTimestamp_ != null) {
if (optionalTimestamp_ == null) {
optionalTimestamp_ = new global::Google.Protobuf.WellKnownTypes.Timestamp();
OptionalTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
OptionalTimestamp.MergeFrom(other.OptionalTimestamp);
}
if (other.optionalFieldMask_ != null) {
if (optionalFieldMask_ == null) {
optionalFieldMask_ = new global::Google.Protobuf.WellKnownTypes.FieldMask();
OptionalFieldMask = new global::Google.Protobuf.WellKnownTypes.FieldMask();
}
OptionalFieldMask.MergeFrom(other.OptionalFieldMask);
}
if (other.optionalStruct_ != null) {
if (optionalStruct_ == null) {
optionalStruct_ = new global::Google.Protobuf.WellKnownTypes.Struct();
OptionalStruct = new global::Google.Protobuf.WellKnownTypes.Struct();
}
OptionalStruct.MergeFrom(other.OptionalStruct);
}
if (other.optionalAny_ != null) {
if (optionalAny_ == null) {
optionalAny_ = new global::Google.Protobuf.WellKnownTypes.Any();
OptionalAny = new global::Google.Protobuf.WellKnownTypes.Any();
}
OptionalAny.MergeFrom(other.OptionalAny);
}
if (other.optionalValue_ != null) {
if (optionalValue_ == null) {
optionalValue_ = new global::Google.Protobuf.WellKnownTypes.Value();
OptionalValue = new global::Google.Protobuf.WellKnownTypes.Value();
}
OptionalValue.MergeFrom(other.OptionalValue);
}
Expand Down Expand Up @@ -2922,24 +2931,24 @@ public enum OneofFieldOneofCase {
}
case 146: {
if (optionalNestedMessage_ == null) {
optionalNestedMessage_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage();
OptionalNestedMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage();
}
input.ReadMessage(optionalNestedMessage_);
input.ReadMessage(OptionalNestedMessage);
break;
}
case 154: {
if (optionalForeignMessage_ == null) {
optionalForeignMessage_ = new global::ProtobufTestMessages.Proto3.ForeignMessage();
OptionalForeignMessage = new global::ProtobufTestMessages.Proto3.ForeignMessage();
}
input.ReadMessage(optionalForeignMessage_);
input.ReadMessage(OptionalForeignMessage);
break;
}
case 168: {
optionalNestedEnum_ = (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) input.ReadEnum();
OptionalNestedEnum = (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) input.ReadEnum();
break;
}
case 176: {
optionalForeignEnum_ = (global::ProtobufTestMessages.Proto3.ForeignEnum) input.ReadEnum();
OptionalForeignEnum = (global::ProtobufTestMessages.Proto3.ForeignEnum) input.ReadEnum();
break;
}
case 194: {
Expand All @@ -2952,9 +2961,9 @@ public enum OneofFieldOneofCase {
}
case 218: {
if (recursiveMessage_ == null) {
recursiveMessage_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
RecursiveMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
}
input.ReadMessage(recursiveMessage_);
input.ReadMessage(RecursiveMessage);
break;
}
case 250:
Expand Down Expand Up @@ -3275,44 +3284,44 @@ public enum OneofFieldOneofCase {
}
case 2410: {
if (optionalDuration_ == null) {
optionalDuration_ = new global::Google.Protobuf.WellKnownTypes.Duration();
OptionalDuration = new global::Google.Protobuf.WellKnownTypes.Duration();
}
input.ReadMessage(optionalDuration_);
input.ReadMessage(OptionalDuration);
break;
}
case 2418: {
if (optionalTimestamp_ == null) {
optionalTimestamp_ = new global::Google.Protobuf.WellKnownTypes.Timestamp();
OptionalTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
input.ReadMessage(optionalTimestamp_);
input.ReadMessage(OptionalTimestamp);
break;
}
case 2426: {
if (optionalFieldMask_ == null) {
optionalFieldMask_ = new global::Google.Protobuf.WellKnownTypes.FieldMask();
OptionalFieldMask = new global::Google.Protobuf.WellKnownTypes.FieldMask();
}
input.ReadMessage(optionalFieldMask_);
input.ReadMessage(OptionalFieldMask);
break;
}
case 2434: {
if (optionalStruct_ == null) {
optionalStruct_ = new global::Google.Protobuf.WellKnownTypes.Struct();
OptionalStruct = new global::Google.Protobuf.WellKnownTypes.Struct();
}
input.ReadMessage(optionalStruct_);
input.ReadMessage(OptionalStruct);
break;
}
case 2442: {
if (optionalAny_ == null) {
optionalAny_ = new global::Google.Protobuf.WellKnownTypes.Any();
OptionalAny = new global::Google.Protobuf.WellKnownTypes.Any();
}
input.ReadMessage(optionalAny_);
input.ReadMessage(OptionalAny);
break;
}
case 2450: {
if (optionalValue_ == null) {
optionalValue_ = new global::Google.Protobuf.WellKnownTypes.Value();
OptionalValue = new global::Google.Protobuf.WellKnownTypes.Value();
}
input.ReadMessage(optionalValue_);
input.ReadMessage(OptionalValue);
break;
}
case 2490: {
Expand Down Expand Up @@ -3560,7 +3569,7 @@ public sealed partial class NestedMessage : pb::IMessage<NestedMessage> {
}
if (other.corecursive_ != null) {
if (corecursive_ == null) {
corecursive_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
Corecursive = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
}
Corecursive.MergeFrom(other.Corecursive);
}
Expand All @@ -3581,9 +3590,9 @@ public sealed partial class NestedMessage : pb::IMessage<NestedMessage> {
}
case 18: {
if (corecursive_ == null) {
corecursive_ = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
Corecursive = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3();
}
input.ReadMessage(corecursive_);
input.ReadMessage(Corecursive);
break;
}
}
Expand Down