| Index: third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc b/third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc
|
| index 5df43d3f953b5a078624bdc578b89d3b74df8198..e3c34040b8fe4a37612e82286d29bdd92e34b058 100644
|
| --- a/third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc
|
| @@ -94,14 +94,15 @@ void FieldGeneratorBase::SetCommonFieldVariables(
|
| void FieldGeneratorBase::SetCommonOneofFieldVariables(
|
| map<string, string>* variables) {
|
| (*variables)["oneof_name"] = oneof_name();
|
| - (*variables)["has_property_check"] = oneof_name() + "Case_ == " + oneof_property_name() +
|
| + (*variables)["has_property_check"] =
|
| + oneof_name() + "Case_ == " + oneof_property_name() +
|
| "OneofCase." + property_name();
|
| (*variables)["oneof_property_name"] = oneof_property_name();
|
| }
|
|
|
| FieldGeneratorBase::FieldGeneratorBase(const FieldDescriptor* descriptor,
|
| - int fieldOrdinal)
|
| - : SourceGeneratorBase(descriptor->file()),
|
| + int fieldOrdinal, const Options* options)
|
| + : SourceGeneratorBase(descriptor->file(), options),
|
| descriptor_(descriptor),
|
| fieldOrdinal_(fieldOrdinal) {
|
| SetCommonFieldVariables(&variables_);
|
| @@ -158,10 +159,11 @@ std::string FieldGeneratorBase::type_name(const FieldDescriptor* descriptor) {
|
| case FieldDescriptor::TYPE_MESSAGE:
|
| case FieldDescriptor::TYPE_GROUP:
|
| if (IsWrapperType(descriptor)) {
|
| - const FieldDescriptor* wrapped_field = descriptor->message_type()->field(0);
|
| + const FieldDescriptor* wrapped_field =
|
| + descriptor->message_type()->field(0);
|
| string wrapped_field_type_name = type_name(wrapped_field);
|
| - // String and ByteString go to the same type; other wrapped types go to the
|
| - // nullable equivalent.
|
| + // String and ByteString go to the same type; other wrapped types
|
| + // go to the nullable equivalent.
|
| if (wrapped_field->type() == FieldDescriptor::TYPE_STRING ||
|
| wrapped_field->type() == FieldDescriptor::TYPE_BYTES) {
|
| return wrapped_field_type_name;
|
| @@ -304,7 +306,9 @@ std::string FieldGeneratorBase::default_value() {
|
| std::string FieldGeneratorBase::default_value(const FieldDescriptor* descriptor) {
|
| switch (descriptor->type()) {
|
| case FieldDescriptor::TYPE_ENUM:
|
| - return type_name() + "." + descriptor->default_value_enum()->name();
|
| + // All proto3 enums have a default value of 0, and there's an implicit conversion from the constant 0 to
|
| + // any C# enum. This means we don't need to work out what we actually mapped the enum value name to.
|
| + return "0";
|
| case FieldDescriptor::TYPE_MESSAGE:
|
| case FieldDescriptor::TYPE_GROUP:
|
| if (IsWrapperType(descriptor)) {
|
|
|