diff options
author | Jon Skeet <skeet@pobox.com> | 2015-06-12 11:17:07 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2015-06-12 11:17:07 +0100 |
commit | 8fcde2cabd02ffe6ea061e259f67241f277368de (patch) | |
tree | e24ac34ffecbd89e8c64ba96236c00b3ba80a56c /src/google | |
parent | ca2adbd560baa504dd721fb68e81d911392b981d (diff) | |
download | protobuf-8fcde2cabd02ffe6ea061e259f67241f277368de.tar.gz protobuf-8fcde2cabd02ffe6ea061e259f67241f277368de.tar.bz2 protobuf-8fcde2cabd02ffe6ea061e259f67241f277368de.zip |
Fix oneof behaviour in the face of default values.
Diffstat (limited to 'src/google')
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_primitive_field.cc | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc index cb7e1b5a..69056790 100644 --- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc @@ -137,8 +137,6 @@ PrimitiveOneofFieldGenerator::~PrimitiveOneofFieldGenerator() { } void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) { - // TODO(jonskeet): What should foo.OneofIntField = 0; do? Clear the oneof? - // Currently foo.OneOfStringField = null will clear the oneof, but foo.OneOfStringField = "" won't. Ick. AddDeprecatedFlag(printer); printer->Print( variables_, @@ -148,15 +146,14 @@ void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) { if (is_value_type) { printer->Print( variables_, - " $oneof_name$_ = value;\n" - " $oneof_name$Case_ = $oneof_property_name$OneofCase.$property_name$;\n"); + " $oneof_name$_ = value;\n"); } else { printer->Print( variables_, - " $oneof_name$_ = value ?? $default_value$;\n" - " $oneof_name$Case_ = value == null ? $oneof_property_name$OneofCase.None : $oneof_property_name$OneofCase.$property_name$;\n"); + " $oneof_name$_ = value ?? $default_value$;\n"); } printer->Print( + " $oneof_name$Case_ = $oneof_property_name$OneofCase.$property_name$;\n" " }\n" "}\n"); } @@ -167,11 +164,9 @@ void PrimitiveOneofFieldGenerator::WriteToString(io::Printer* printer) { } void PrimitiveOneofFieldGenerator::GenerateParsingCode(io::Printer* printer) { - // TODO(jonskeet): What if the value we read is the default value for the type? printer->Print( variables_, - "$oneof_name$_ = input.Read$capitalized_type_name$()\n;" - "$oneof_name$Case_ = $oneof_property_name$OneofCase.$property_name$;\n"); + "$property_name$ = input.Read$capitalized_type_name$()\n;"); } } // namespace csharp |