aboutsummaryrefslogtreecommitdiff
path: root/src/google
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2015-06-12 11:17:07 +0100
committerJon Skeet <skeet@pobox.com>2015-06-12 11:17:07 +0100
commit8fcde2cabd02ffe6ea061e259f67241f277368de (patch)
treee24ac34ffecbd89e8c64ba96236c00b3ba80a56c /src/google
parentca2adbd560baa504dd721fb68e81d911392b981d (diff)
downloadprotobuf-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.cc13
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