|
|
|
@ -255,7 +255,7 @@ GenerateBuilderMembers(io::Printer* printer) const { |
|
|
|
|
bool support_field_presence = SupportFieldPresence(descriptor_->file()); |
|
|
|
|
|
|
|
|
|
printer->Print(variables_, |
|
|
|
|
"private $type$ $name$_ = null;\n"); |
|
|
|
|
"private $type$ $name$_;\n"); |
|
|
|
|
|
|
|
|
|
printer->Print(variables_, |
|
|
|
|
// If this builder is non-null, it is used and the other fields are
|
|
|
|
@ -444,15 +444,20 @@ void ImmutableMessageFieldGenerator:: |
|
|
|
|
GenerateBuildingCode(io::Printer* printer) const { |
|
|
|
|
if (SupportFieldPresence(descriptor_->file())) { |
|
|
|
|
printer->Print(variables_, |
|
|
|
|
"if ($get_has_field_bit_from_local$) {\n" |
|
|
|
|
" $set_has_field_bit_to_local$;\n" |
|
|
|
|
"}\n"); |
|
|
|
|
"if ($get_has_field_bit_from_local$) {\n"); |
|
|
|
|
printer->Indent(); |
|
|
|
|
PrintNestedBuilderCondition(printer, |
|
|
|
|
"result.$name$_ = $name$_;\n", |
|
|
|
|
"result.$name$_ = $name$Builder_.build();\n"); |
|
|
|
|
printer->Outdent(); |
|
|
|
|
printer->Print(variables_, |
|
|
|
|
" $set_has_field_bit_to_local$;\n" |
|
|
|
|
"}\n"); |
|
|
|
|
} else { |
|
|
|
|
PrintNestedBuilderCondition(printer, |
|
|
|
|
"result.$name$_ = $name$_;\n", |
|
|
|
|
"result.$name$_ = $name$Builder_.build();\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
PrintNestedBuilderCondition(printer, |
|
|
|
|
"result.$name$_ = $name$_;\n", |
|
|
|
|
|
|
|
|
|
"result.$name$_ = $name$Builder_.build();\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ImmutableMessageFieldGenerator:: |
|
|
|
|