Commit 3980cf9d authored by Jon Skeet's avatar Jon Skeet

Prohibit null values for string/bytes fields in generated code.

parent 68380f0f
......@@ -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_,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment