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)) { |