|
@@ -523,8 +523,17 @@ void ImmutablePrimitiveOneofFieldGenerator::
|
|
GenerateSerializationCode(io::Printer* printer) const {
|
|
GenerateSerializationCode(io::Printer* printer) const {
|
|
printer->Print(variables_,
|
|
printer->Print(variables_,
|
|
"if ($has_oneof_case_message$) {\n"
|
|
"if ($has_oneof_case_message$) {\n"
|
|
- " output.write$capitalized_type$(\n"
|
|
|
|
- " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n"
|
|
|
|
|
|
+ " output.write$capitalized_type$(\n");
|
|
|
|
+ // $type$ and $boxed_type$ is the same for bytes fields so we don't need to
|
|
|
|
+ // do redundant casts.
|
|
|
|
+ if (GetJavaType(descriptor_) == JAVATYPE_BYTES) {
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
+ " $number$, ($type$) $oneof_name$_);\n");
|
|
|
|
+ } else {
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
+ " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n");
|
|
|
|
+ }
|
|
|
|
+ printer->Print(
|
|
"}\n");
|
|
"}\n");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -533,8 +542,17 @@ GenerateSerializedSizeCode(io::Printer* printer) const {
|
|
printer->Print(variables_,
|
|
printer->Print(variables_,
|
|
"if ($has_oneof_case_message$) {\n"
|
|
"if ($has_oneof_case_message$) {\n"
|
|
" size += com.google.protobuf.CodedOutputStream\n"
|
|
" size += com.google.protobuf.CodedOutputStream\n"
|
|
- " .compute$capitalized_type$Size(\n"
|
|
|
|
- " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n"
|
|
|
|
|
|
+ " .compute$capitalized_type$Size(\n");
|
|
|
|
+ // $type$ and $boxed_type$ is the same for bytes fields so we don't need to
|
|
|
|
+ // do redundant casts.
|
|
|
|
+ if (GetJavaType(descriptor_) == JAVATYPE_BYTES) {
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
+ " $number$, ($type$) $oneof_name$_);\n");
|
|
|
|
+ } else {
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
+ " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n");
|
|
|
|
+ }
|
|
|
|
+ printer->Print(
|
|
"}\n");
|
|
"}\n");
|
|
}
|
|
}
|
|
|
|
|