Prohibit null values for string/bytes fields in generated code.
This commit is contained in:
parent
68380f0f66
commit
3980cf9df1
3 changed files with 12 additions and 13 deletions
|
@ -111,6 +111,16 @@ namespace Google.Protobuf
|
|||
Assert.IsNull(message.OneofNestedMessage);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NullStringAndBytesRejected()
|
||||
{
|
||||
var message = new TestAllTypes();
|
||||
Assert.Throws<ArgumentNullException>(() => message.SingleString = null);
|
||||
Assert.Throws<ArgumentNullException>(() => message.OneofString = null);
|
||||
Assert.Throws<ArgumentNullException>(() => message.SingleBytes = null);
|
||||
Assert.Throws<ArgumentNullException>(() => message.OneofBytes = null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RoundTrip_Empty()
|
||||
{
|
||||
|
|
|
@ -127,17 +127,6 @@ void FieldGeneratorBase::AddDeprecatedFlag(io::Printer* printer) {
|
|||
}
|
||||
}
|
||||
|
||||
void FieldGeneratorBase::AddNullCheck(io::Printer* printer) {
|
||||
AddNullCheck(printer, "value");
|
||||
}
|
||||
|
||||
void FieldGeneratorBase::AddNullCheck(io::Printer* printer, const std::string& name) {
|
||||
if (is_nullable_type()) {
|
||||
printer->Print(" pb::ThrowHelper.ThrowIfNull($name$, \"$name$\");\n",
|
||||
"name", name);
|
||||
}
|
||||
}
|
||||
|
||||
void FieldGeneratorBase::AddPublicMemberAttributes(io::Printer* printer) {
|
||||
AddDeprecatedFlag(printer);
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ void PrimitiveFieldGenerator::GenerateMembers(io::Printer* printer) {
|
|||
} else {
|
||||
printer->Print(
|
||||
variables_,
|
||||
" $name$_ = value ?? $default_value$;\n");
|
||||
" $name$_ = pb::Preconditions.CheckNotNull(value, \"value\");\n");
|
||||
}
|
||||
printer->Print(
|
||||
" }\n"
|
||||
|
@ -183,7 +183,7 @@ void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) {
|
|||
} else {
|
||||
printer->Print(
|
||||
variables_,
|
||||
" $oneof_name$_ = value ?? $default_value$;\n");
|
||||
" $oneof_name$_ = pb::Preconditions.CheckNotNull(value, \"value\");\n");
|
||||
}
|
||||
printer->Print(
|
||||
variables_,
|
||||
|
|
Loading…
Add table
Reference in a new issue